2012-03-24 19 views
0

私は三つのモデルがあります:私はBasiccaseに新しいForm3Cを追加することができますどのようにRailsのhas_oneの関連

class User < ActiveRecord::Base 
    has_many :basiccases 
end 

class Basiccase < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :form3_c 
end 

class Form3C < ActiveRecord::Base 
    has_one :basiccases 
end 

を?フォームを作成するにはコントローラBasiccaseまたはコントローラForm3Cを使用する必要がありますか?モデルのあなたの命名は、その説得力はないが、私はBasiccaseController?

+0

'has_one'関係はコントローラではなくモデルに入ります。したがって、 'Form3C'モデルクラスをお持ちの場合は、そこに関係を追加してみてください。 'has_one:basiccase'のように、' has_one'関係は単項式になるはずです。通常は 'Form3C'インスタンスから' Basiccase'をビルドします: 'self.build_basiccase'は' belongs_to''Form3C'を構築します。 – mliebelt

答えて

4

has_oneのような関係は、コントローラではなくモデルで定義されています。私はあなたがこの(あなたは関係が行きたい方向--not確認BasiccaseForm3cを追加できるように)したいと思います:コントローラーとフォーム(ビュー)を構築するためのヒントについて

class Form3c < ActiveRecord::Base 
    belongs_to :basiccase 
end 

class Basiccase < ActiveRecord::Base 
    belongs_to :user 
    has_one :form3c 
end 

を、見てthis Rails tutorialで始まり、セクション6の周りから始まります。

+0

私は本当にどこにhas_oneの関係を維持するのか混乱しています。両方が1対1であるからです。私の要件は、ユーザーが基本的なケースに新しいフォームを追加することができるはずです。私はこれをどのように行うことができますか? –

0

で外部キーを設定することができますどのように私はForm3cControllerを使用している場合、私はあなたのbasiccases表は1列form3c_idを持っていると仮定しています。

あなたは自動的に外部キーとしてform3c_idがかかります@form3c_build_basiccaseようbasiccaseオブジェクトを構築することができ、コントローラに続いform3cオブジェクトのためのフォームを作成する必要があります。 this rails castを参照してください。

form3caccepts_nested_attributes_for :basiccaseに行くこともできます。それについてはhereを見てください。

関連する問題