2009-05-30 12 views
0

Ruby on Railsでプログラミングする方法を習得しています。Ruby on Railsフレームワークがどれほど多くの作業をしているのか本当に感心しています。Ruby on Railsの暗黙テーブル

Object 
-------- 
object_id 
description 

ObjectGroup 
-------- 
group_id 
description 

アイデアが、私はいくつかのオブジェクトを持っていることで、ユーザーがオブジェクトのグループを定義できるようにするために私がしたい:私は、次の2つのクラスがあります。 Object行とObjectGroup行の両方に、独自の識別子と関連データがあります。これは、Web上の公開ドキュメントに基づいて非常に直感的です。私の質問は、ObjectGroupを構成するオブジェクトに関する情報を格納し、Ruby on Railsフレームワークを最大限に活用する方法です。

ObjectGroupEntry 
-------- 
object_id 
group_id 

ObjectGroupEntryテーブルの各エントリは、オブジェクトグループの一部であるオブジェクトを表す:SQLでこれを行うには明らかな方法は、次の形式のエントリが格納されている第3のテーブルを利用することでした。このテーブルを手動で作成し、ObjectやObjectGroupとやり取りする方法を教えるクラスを教えるのは私の責任ですか?あるいは、Ruby on Railsは私がまだ見つけていないこれを行ういくつかの魔法を提供していますか?

私が知っていることでこれを自分自身で行うことができましたが、私はまだRuby on Railsを学んでおり、これを行うためにRight Way(TM)を学びたいと思います。

+2

Objectというクラスを実際に作成することはおそらくいい考えではないでしょうか。それはかなりの影響を与える可能性があります... –

+0

合意、これは単なる例です。 –

答えて

3

Railsでは、どちらも少しです。あなたは、通常の命名規則に移行(またはその他の方法)を使用してテーブルを作成し、オブジェクトやオブジェクトグループのモデルに次の行に置く:

==Object== 
has_and_belongs_to_many :object_groups 

==ObjectGroup== 
has_and_belongs_to_many :objects 

限り、あなたはいずれかを持っていないとして、 ObjectObjectGroupテーブルに余分な情報があれば、これだけで十分です。そうしないと、新しいモデルが必要だろうが、そうのように同じ動作を得ることができます:多対多の関係との関係に関するその他の情報へのアクセスを可能に取得する属性を介し:とhas_manyの関係を示す

==Object== 
has_many :object_object_groups 
has_many :object_groups, :through => :object_object_groups 

==ObjectObjectGroup== 
belongs_to :object 
belongs_to :object_group 

==ObjectGroup== 
has_many :object_object_groups 
has_many :objects, :through => :object_object_groups 

を同じように。

+0

通常の命名規則は何ですか? ObjectObjectGroupの名前をObjectGroupListに変更できますか?申し訳ありませんが、私は簡単に混乱しています。 :) –

+0

http://itsignals.cascadia.com.au/?p=7命名規則。独自のテーブルやモデルなどを用意して規約を上書きすることもできますが、これは最初のコンベンションで行うよりも(意図的に)より多くの作業であり、これを行う方法を覚えていません。 – workmad3

+0

has_and_belongs_to_manyとhas_many :through => – nitecoder

1

私はあなたが、それはむしろworkmad3が述べている何よりも

has_many :object_object_groups 
has_many :objects, :though => :through => :object_object_groups 

あるでしょうと思います。提供されている他のすべての情報は正しいですが、構文エラーです。