我正处于为以下场景提出良好模型设计的情况
有一个User
模型有一个Profile
。Category
也是一个不同的模型。每个Profile
喜欢和不喜欢一些Categories
。那么如何创建迁移和模型。此外,在创建或编辑个人资料时,我被迫使用multiselect来选择喜欢和不喜欢的内容。
我计划的是通过以下方式创建一个与Like
相关的模型Profile
。
Profile -> has_one :like
Like -> has_and_belongs_to_many :categories
belongs_to: profile
Category -> has_and_belongs_to_many :likes
同样也不喜欢。因此,当我们获得@profile.like.categories
时,将列出特定@profile
所喜欢的所有类别。
我的想法是否可取。请指导。
答案 0 :(得分:0)
HABTM也是我为此推荐的 - 它的主要特色是为likes
提供一种方法,让categories
有很多Like
- 如果你不需要任何额外的属性,你HABTM会好起来的
就个人而言,我会重构删除Profile
模型,只需提供categories
HABTM #app/models/profile.rb
Class Profile < ActiveRecord::Base
has_and_belongs_to_many :categories, join_table: "likes_profiles", foreign_key: "like_id"
end
#app/models/category.rb
Class Category < ActiveRecord::Base
has_and_belongs_to_many :categories, join_table: "likes_profiles", association_foreign_key: "like_id"
end
:
category
这会将每个like
视为关系中的dislikes
。我很感激它无法处理{{1}},但希望能给你一些关于你能做什么的想法