我们假设这个模型:
Movie - Title: String - Has many: - Alternative Title: String
我的问题是,我应该如何存储alt。标题属性?我决定采用三种方法:
后两者似乎在逻辑上是等同的。我倾向于CSV方法。任何人都可以就此提出一些建议吗?对速度和可搜索性有什么影响?
答案 0 :(得分:2)
如果一部电影可以有很多标题,那么拥有标题模型并为电影模型提供has_many :titles
关系是最有意义的,特别是如果您稍后决定添加更多关于标题的元数据。这似乎有点矫枉过正,但从长远来看,我认为这将是最不麻烦的事情。此外,我认为电影的“主要”标题也应该是一个标题对象,可能带有is_main_title
或类似的属性,以区别于其他标题。
答案 1 :(得分:0)
如果大部分时间只使用主要标题,我会使用您的CSV选项。
如果大部分时间都使用了所有标题,我会将所有标题(主要和次要)放在一个CSV列(名为“标题”)中,并在需要主要标题时获取第一个标题(使用辅助功能)。
为什么呢? 因为它使事情变得简单 - 如果时间已经到来,就像乔丹所说,你需要另一个属性,你总是可以迁移到一个单独的模型。
在此之前,YAGNI。
答案 2 :(得分:0)
我也会投票给一个单独的模型,即使看起来有点过分它会让你基本上按照最简单的Rails方式。但是,如果你选择不获得与关联相关的魔法所带来的好处,那么我会建议使用YAML或JSON而不是CSV。 CSV很简单,但Rails已经支持YAML序列化,可能是最简单的解决方案。查看RDoc on #serialize。对于给定的示例,这基本上等于:
class Movie < ActiveRecord::Base
serialize :alternate_titles
end
有了这个,Rails会为你处理很多苦差事,你会有一系列很好的备用游戏。