当我has_one
可以嵌入关联对象并使用composed_of
和/或serialize
. 在我总是加入关联对象并且不需要复杂查询的情况下。例如:
狗(颜色,重量)has_one :head
头(牙齿数量,眼睛颜色)
我可以用 Dog(color,weight,head_teeth_count,head_eye_color) 替换并使用“计算属性”或值对象,例如
composed_of :head, mapping: [%w(head_teeth_count teeth_count), %w(head_eye_color eye_color)]
更少的表,更简单,更清晰的代码,更少的模型,没有意外的额外查询,更好的性能。
另一个例子:
用户(电子邮件)has_many :roles
角色(姓名)
转换为用户(电子邮件,角色)
serialize :roles, Array
在这些情况下我错过了什么?