加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails-3 – 在Rails中建立关系?

发布时间:2020-12-17 03:12:48 所属栏目:百科 来源:网络整理
导读:我正在建立一个应用程序,用户有一些愿望清单 用户只能拥有一个心愿单,并且可以将现有物品添加到心愿单 但是这些项目属于该站点上的其他用户 我需要能够通过current_user.wishlist.items访问wishlist项目(即时使用Devise,因此current_user可用) 我虽然在items
我正在建立一个应用程序,用户有一些愿望清单

用户只能拥有一个心愿单,并且可以将现有物品添加到心愿单
但是这些项目属于该站点上的其他用户

我需要能够通过current_user.wishlist.items访问wishlist项目(即时使用Devise,因此current_user可用)

我虽然在items表中添加了wishlist_id列,但由于项目可以属于多个愿望清单,因此无效.

这看起来很简单,但我很难想象关系或我应该生成的迁移

解决方法

class User < ActiveRecord::Base

  has_one :wishlist # or belongs_to :wishlist,it depends which you prefer

end

class Wishlist < ActiveRecord::Base

  belongs_to :user
  has_and_belongs_to_many :items

end

而且当然:

./script/rails generate migration create_item_wishlists wishlist_id:integer item_id:integer

在项目和愿望清单之间创建连接表.

更新:在评论中回答“坦率的暴风雪”问题:

假设您的结构与我的答案相同(只需将项目更改为产品或其他型号名称),使用HABTM关系您只需要将新“项目”添加到“项目”的集合中,然后保存心愿单:

@user.wishlist.items << item
@user.wishlist.save

你可以在用户中使用它:

class User
  def add_to_wishlist(item)
    wishlist.items << item
  end
end

如果要删除或修改“items”的集合,只需使用Array中的任何Ruby方法,然后保存wishlist,它将为您检查差异并仅保存更改.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读