Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 为什么我要使用一对一(has__-one)关联?_Ruby On Rails_Ruby_Relational Database_Rails Activerecord - Fatal编程技术网

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使用位掩码,这也是一个奇怪的决定(为绿色地球保存位?)。搜索具有某个角色的用户–好吧,对于我的示例来说,这不是一个好例子。