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