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もし何か手間がかかっているようであれば、それを行う良い方法があります。 –
私の指導のために再びありがとう。ネストされたフォームのほとんどすべての例は、フォーム内に子モデルがある場合に発生するため、現在のソリューションではおそらく時間を置いています。私は反対方向にそれを持っています(belongs_toはメインモデルです)。 belongs_toモデルがフォームの主なモデルである場合、私はいくつかの例を見出しましたが、私は2つのレベルの深い関連性を持つ例は見つかりませんでした。これは複雑になる可能性があります... – chodorowicz