作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设
class Kid < ActiveRecord::Base
has_one :friend
end
class Friend< ActiveRecord::Base
belongs_to :kid
end
class Kid < ActiveRecord::Base
has_many :friends
end
class Friend< ActiveRecord::Base
belongs_to :kid
end
最佳答案
收藏
最重要的是,如果您将关联更改为 has_many :x
关系,它会创建关联数据的集合;而不是单个关联的单个对象
这里的区别与其实现无关,但对您如何在整个应用程序中使用关联有很多影响。我会解释两者
修复
首先,您是正确的,您可以将 has_one :friend
更改为 has_many :friends
。您需要小心理解为什么会这样:
ActiveRecord 关联通过关联数据表中称为 foreign_keys
的东西来工作。这些是对父类的 "primary key" (ID) 的列引用,允许 Rails/ActiveRecord 关联它们
只要您为所有 foreign_key
对象维护 Friend
s,您就会使系统正常工作。
——
数据
要扩展这个想法,您必须记住,当您创建 has_many
关联时,Rails/ActiveRecord 将在您每次引用关联时拉取许多记录。
这意味着如果您调用 @kind.friends
,您将不再收到单个对象。您将从数据表中接收所有对象 - 这意味着您必须调用 .each
循环来操作/显示它们:
@kid = Kid.find 1
@kid.friends.each do |friend|
friend.name
end
save
上调用
order.save
方法时遇到问题,告诉您它已经存在,并且它不允许您实际上为一个
order
拥有许多
customer
记录,您可能需要调用 orders.save(:validate=> false )
关于ruby-on-rails - Rails : How to Convert has_one to has_many association,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25277864/
我是一名优秀的程序员,十分优秀!