Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.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 rails中具有多个值的属性:布尔、字符串和序列化还是hbtm?_Ruby On Rails_Attributes_Checkbox_Boolean_Serialization - Fatal编程技术网

Ruby on rails rails中具有多个值的属性:布尔、字符串和序列化还是hbtm?

Ruby on rails rails中具有多个值的属性:布尔、字符串和序列化还是hbtm?,ruby-on-rails,attributes,checkbox,boolean,serialization,Ruby On Rails,Attributes,Checkbox,Boolean,Serialization,假设您有一个可以属于多个类别的图书模型。类别是预定义的,但是我们可以让用户添加自己的类别,即使大多数时候默认的类别已经足够了 根据你的说法,最好的解决办法是什么 a) 与类别模型的多对多关系?但鉴于默认类别在大多数情况下已经足够,这难道不是过分了吗? b) 每个默认类别的布尔值和用户输入类别的额外字符串 C) 只是一个字符串和serialize的使用?但是,在默认选项中使用复选框输入可能会有点棘手 d) 你还有什么建议吗 谢谢你的时间 谢谢您可能需要使用HABTM。如果你想收集关于各种类别的任何

假设您有一个可以属于多个类别的图书模型。类别是预定义的,但是我们可以让用户添加自己的类别,即使大多数时候默认的类别已经足够了

根据你的说法,最好的解决办法是什么

a) 与类别模型的多对多关系?但鉴于默认类别在大多数情况下已经足够,这难道不是过分了吗? b) 每个默认类别的布尔值和用户输入类别的额外字符串 C) 只是一个字符串和serialize的使用?但是,在默认选项中使用复选框输入可能会有点棘手 d) 你还有什么建议吗

谢谢你的时间


谢谢

您可能需要使用
HABTM
。如果你想收集关于各种类别的任何信息,这并不过分;例如,创建日期。您还可以轻松获取给定类别的所有书籍,而不必担心书籍模型中的作用域

此外,接下来您可能希望能够将其他对象添加到类别中。没有太多的开销,而且设置起来也很简单,所以值得一试


有关使用复选框实施HABTM的帮助,请查看railscast。关于
HABTM
has\u many:through
之间差异的讨论,我真的推荐railscasts。

如果您想收集有关类别的信息,那么您需要将其设置为:has\u many:through=>关系。由于这个原因,HABTM有点不受欢迎。我指的是每个类别对象本身——对于跟踪类别和书籍之间连接的任何信息来说,这当然是正确的。似乎那些铁路司机展示了HABTM的唯一有效用途。。。一些类别实现。在这种情况下性能如何?在我看来,使用hbtm将需要在稍后实现一些即时加载或缓存,但可能比使用其他解决方案更早。特别是如果还有一些其他属性,比如Category。我相信这一点是错误的吗?不确定性能方面——如果您想要扩展列表,唯一合理的选择是has_many:through,这当然要慢一些(尽管它确实可以让您跟踪连接的属性)。