我是Rails的新手,但我的应用程序有大问题。
业务逻辑
-用户可以喜欢的餐厅,菜单,项目。
我们有:

class Restaurant < ActiveRecord::Base
     has_many :items, :dependent=>:destroy
     has_many :menus, :dependent=> :destroy
     belongs_to :owner, :class_name => 'User'
end
class Menu < ActiveRecord::Base
     belongs_to :restaurant
     has_many :items,:dependent=>:destroy
end
class Item < ActiveRecord::Base
     belongs_to :restaurant
     belongs_to :menu
end
class User < ActiveRecord::Base
     has_many :restaurants
end

有人能帮我解决我的问题吗?
谢谢你的支持
对不起,我是越南人。

最佳答案

您需要在User项和Favoritable项之间建立多态关联。这是通过以下关联完成的:

class Restaurant < ActiveRecord::Base
  belongs_to :favoritable, polymorphic: true
end

class Menu < ActiveRecord::Base
  belongs_to :favoritable, polymorphic: true
end

class Item < ActiveRecord::Base
  belongs_to :favoritable, polymorphic: true
end

class User < ActiveRecord::Base
  has_many :favorites, as: :favoritable
end

然后,可以使用以下命令检索用户的收藏夹:
user = User.first
user.favorites
# => [...]

可以使用以下方法生成新的收藏夹:
user.favorites.build(favorite_params)

或者可以直接使用以下命令指定一个受欢迎的对象:
user.favorites << Restaurant.find(1)
user.favorites << Menu.find(1)
user.favorites << Item.find(1)

有关polymorphic associations的更多信息。

关于ruby-on-rails - 添加到收藏夹(多种型号),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19518683/

10-11 19:58