我是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/