1
我是Ruby新手,所以请原谅,如果这些是完全无知。我想设置如下关联:在Rails中设置模型关联 - 从孙子方保存'
- 转录属于组成
- 成分有很多改编,属于艺术家
- 艺术家有很多成分(和改编通过组成)
我不不想有任何创作作品和艺术家的独立形式。用户只需创建转录 - 转录的形式具有艺术家和作品的文本字段,数据库条目应该动态创建(如果它们不存在的话)。
我应该如何设置模型?我应该在转录中使用一些虚拟属性吗?
# transcription.rb
def artist_name
artist.name if self.artist
end
def artist_name=(name)
self.artist = Artist.find_or_create_by_name(name) unless name.blank?
end
,然后再使用艺术家,我发现或之前创建创建find_or_create_by_name
组成?
任何帮助表示赞赏!在此先感谢
感谢了很多!你的代码几乎是完美的,并引导我去做什么似乎工作。我遇到了attr_reader和我的表单问题(他们在构图和艺术家未初始化时失败)。我已经写了这样的东西(可以做得更好吗?)http://pastebin.com/7WvCaDBZ 我也改变了保存到这,因为我想总是有独特的艺术家和作曲对:http: //pastebin.com/ZapzvBF5 – chodorowicz
更好的方法是不使用composition_name或artist_name。只需访问transcription.composition.artist.name和transcription.composition.name。阅读“嵌套表单”,我相信你会得到一些好的想法。 http://guides.rubyonrails.org/2_3_release_notes.html#nested-object-forms如果在rails中有些东西看起来很尴尬,那么很可能有更好的方法。 –
再次感谢我的指导。我可能会留下当前的解决方案,因为几乎所有嵌套窗体的例子都是当窗体中有子模型的时候。我有相反的方向(belongs_to是主要模型)。我发现了几个例子,当belongs_to模型是形式的主要模型,但我没有找到任何与两级深层关联的例子,因为我有。这可能会变得复杂...... – chodorowicz