我试图在包模型中添加标记,每个用户都应该有自己创建的标记。
两国关系将是:
Package
has_many :tags
belongs_to :user
User
has_many :packages
has_many :tags
Tag
has_many :packages
belongs_to :user
我应该使用什么联想?
我应该使用has_and_belongs_to_many
on Tag和Package还是has_many_through
?还是每种型号上都有has_many
?
发布于 2018-10-27 03:40:25
您不能同时拥有Package has_many :tags
和Tag has_many :packages
。没错,应该使用has_and_belongs_to_many
或has_many through
来代替。它们之间的区别在于您希望如何处理连接表。
如果它的唯一目的是保存tags
和packages
之间的连接,那么可以使用has_and_belongs_to_many
。
否则,如果您想在联接表中保留一些附加信息(例如包的标记权重),那么它可以是一个单独的模型;因此关联应该是has_many through
。
也见this的答案。
与User
模型的关联如何:由于Package
和Tag
都属于User
,所以packages
和tags
表都在字段user_id
中实现了该关联。所以User has_many :packages
和User has_many :tags
。没有其他选择。
https://stackoverflow.com/questions/53018360
复制相似问题