Ruby on rails 为什么我要使用一对一(has__-one)关联?
当我可以嵌入关联对象并使用由和/或序列化组成的时,我为什么要使用具有一个关联(和附加的表、模型)。在我总是加入关联对象并且不需要复杂查询的情况下。例如: 狗(颜色、体重)Ruby on rails 为什么我要使用一对一(has__-one)关联?,ruby-on-rails,ruby,relational-database,rails-activerecord,Ruby On Rails,Ruby,Relational Database,Rails Activerecord,当我可以嵌入关联对象并使用由和/或序列化组成的时,我为什么要使用具有一个关联(和附加的表、模型)。在我总是加入关联对象并且不需要复杂查询的情况下。例如: 狗(颜色、体重)有一个:头头(牙齿、眼睛、颜色) 我可以用Dog(颜色、重量、头部、牙齿、头部、眼睛、颜色)替换,并使用“计算属性”或值对象,如 由以下部分组成:头部,映射:[%w(头部牙齿计数牙齿计数),%w(头部眼睛颜色眼睛颜色)] 表更少、更简单、代码更清晰、模型更少、没有意外的额外查询、性能更好 另一个例子: 用户(电子邮件)有许多:角
有一个:头
头(牙齿、眼睛、颜色)
我可以用Dog(颜色、重量、头部、牙齿、头部、眼睛、颜色)替换,并使用“计算属性”或值对象,如
由以下部分组成:头部,映射:[%w(头部牙齿计数牙齿计数),%w(头部眼睛颜色眼睛颜色)]
表更少、更简单、代码更清晰、模型更少、没有意外的额外查询、性能更好
另一个例子:
用户(电子邮件)有许多:角色
角色(名称)
转换为用户(电子邮件、角色)
序列化:角色、数组
在这些例子中,我遗漏了一些东西?语义,这实际上是编写好软件的一个相当重要的部分 书不是由作者写的。书有作者 我还认为,对于示例更简单或代码更清晰,您大错特错了。性能改进值得商榷,而且可能可以忽略不计
你的最后一个案子特别糟糕。如果要搜索特定角色中的所有用户,该怎么办?实例化所有用户,反序列化并一次检查一个?语义,这实际上是编写好软件的一个相当重要的部分 书不是由作者写的。书有作者 我还认为,对于示例更简单或代码更清晰,您大错特错了。性能改进值得商榷,而且可能可以忽略不计 你的最后一个案子特别糟糕。如果要搜索特定角色中的所有用户,该怎么办?实例化所有用户,反序列化并一次检查一个?好吧,这里rbates使用位掩码,这也是一个奇怪的决定(为绿色地球保存位?)。搜索具有某个角色的用户–好吧,对于我的示例来说,这不是一个好例子。好吧,这里rbates使用位掩码,这也是一个奇怪的决定(为绿色地球保存位?)。搜索具有某个角色的用户–好吧,对于我的示例来说,这不是一个好例子。