2012-03-23 10 views
0

小規模なプロジェクトで苦労している初心者のRails初心者です。私は練習として好きなボードゲームのためのシンプルな造船ツールを作っています。少し失われています。モデル間の関係を設定するのに役立つ必要があります

何をしたいですか? - Shipモデルレコードを作成した後、Shipモデルに関連付けられるTraitsモデルレコードを作成します。 Shipモデルレコードを更新した後、Shipモデルレコードに関連付けられるTraitsモデルを更新または作成します。

私は何を試しましたか? - 列の変数として各船モデルレコードに特性を追加する。私はこれが私のShipモデルのそれぞれの特性を保存する最も効果的な方法だとは思わない。 Traitsモデルが設定されていますが、そのモデルにナビゲートして船のモデルに関連付ける方法がわかりません

終了したらどうしますか? - それらの対応する値と各船の属性をリストする各船舶模型レコードに格納された配列、

すなわちなら

trait_list = [trait1 => T1、trait2 => T2、trait3 = > t3、trait4 => t4]

ship_traits = [t1、t4]。

最終的には、自分の現在のモデルに関係するすべての単一形質を反復することなく、私の船のダイアグラムページでその形質を呼び出すことができます。

モデル間の関連付けをどのように設定する必要があるのか​​分かりません。私が研究しなければならない指示に関する助言や親切なアドバイスは、熱心に歓迎されます。私はあいまいさを事前にお詫びします、私は完全な初心者です。

乾杯、 ニック

答えて

1

私はこれがあなたの問題を解決するだろうが100%わからないんだけど、あなたはこのような何か行うことができます:

class Ship < ActiveRecord::Base 
    has_many :traits 
    accepts_nested_attributes_for :traits 
end 

class Trait < ActiveRecord::Base 
    belongs_to :ship 
end 


# In your form 
- form_for @ship do |f| 
    - f.fields_for :traits do |ff| 
    = ff.label :trait_name 
    = ff.text_field :trait_name 

# this will return all the traits for model defined as @ship 
@ship.traits 

を、私はそれが船のモデル内の配列ではないことを知っていますモデルの列を配列に設定するのはちょっと難しいと聞いています。多くの船が多くの特色を持つことができ、これらの特質が多くの異なる船に属することができるように、特性をユニークにするには、has_many:through関係を持つことになります。それが事実なら、私に知らせて、私は再び答えます。または、これを見ることができます:http://guides.rubyonrails.org/association_basics.html

+0

Seanpat、私はこれが私が探していたものに非常に近いと思います。私はこれを試して、私のtraitsテーブルにship.idカラムがないことを伝えるエラーを受け取りました。だから私はそれをマイグレーションする必要があると思います。あなたの例に照らして、アソシエーションの基礎に関するリンクがもっと意味を成しています。再度、感謝します。 –

関連する問題