考虑使用primary_key
模型title
以方便设置为id
列,而不是默认列has_many :through
。请参阅this article和guides.rubyonrails.org
假设此模型与第二个Reader
模型之间存在dependent: :destroy
关联。在Book
和Reader
模型中使用reader
可以保证删除book
所有关联都将被删除,并删除Book
所有关联将是删除。
title
模型记录了100本阅读量最多的书籍,每月更新一次列表。
更新列表将涉及更新purchasings
和title
属性,因此可能会发生前一个月的foreign_key
排名为100,下个月可能会排在100以外因此没有数据库。
作为基于不再存在的Book
(第101本书名称)的关联读者/书籍,该关联本身会被删除吗?
或者协会会以某种方式存活,因为Book
(ids
中没有有效删除而是保留了100个项目及其原始{{1}})?
答案 0 :(得分:0)
答案是否定的。
我使用关系模型和M.Hartl's tutorial中描述的has_many:through关联来复制条件:用户可以使用关系关联跟随(并且后面跟着)另一个用户。
我有100个用户并创建了用户101和102(id 101和102)。
我关注user 1
作为user 101
,而user 1
跟随user 101
。
我将user 101
的ID更改为103。
此更改后user 1
关系减少2(-1个跟随者和-1个粉丝)。
但Relationship.count
仍然相同:User 1
和User 101
之间的关系未被销毁,尽管User.find(101)
报告"无法找到ID = 101&的用户#34;
然后我将user 102
的ID更改为101
我的鄙视user 102
继承了原始user 101
的关系,而user 1
恢复了失去的关系。
因此,总之,关联基于主键。
如果更改了记录的主键值,则该记录的原始关联不会更多地链接到新的主键值。
让我感到困惑的是,尽管在用户模型中有一条has_many :relationships, dependent: :destroy
行,并且旧的id指的是数据库中不再存在的用户,但这些关联并未被销毁。