2009-08-11 10 views
1

警告、私はレール上のルビーを初めて使っています。私は自分のデータベースがそれほど素晴らしいものではないことを知っていますが、私たちはリモートデータベースから引き出し、そのデータベースからの情報を保存しています。ルビーのレールへの結合を理解するのに役立つ

ユーザー:
- ID
- ...

ステーション
- ID
- user_idを
- hex_key(ユニーク)
- ...

通話
- id
- (ステーションからの六角キー)
- (リモートデータベースからの)データソースID

コールの詳細
- ID
- call_index(コールからのデータソースID)

応答
- ID
- コールからcall_index(データソースID )
- ID- (

応答詳細
)リモート・データベースからRESPONSE_ID - 限りのモデルが行くようにresponse_index(回答からRESPONSE_ID)

(これは私がこれまでに完了したすべてである)私は、これはまた、私の最大の問題だと思う:

ユーザーは多くのステーションを持っているが、ステーションを通じて呼び出しますそして、の通話
ステーションによるレポートは、呼び出しは、多くの回答があり、回答は、私はこれを理解しようとしているが、どのように私はこれをモデル化しますので、私はできてきたコール

に属しステーション
に属している多くのコール
を持っていますからすべてを得るユーザーは正しくuser.responses.find @
(:すべて)このような何か
、それはここでは、そのユーザ

答えて

0

ここでは、データベースのスキーマと説明に基づいて、あなたのモデルのようなものになります。

クラスのユーザー<はActiveRecord ::ベース にhas_many:ステーション エンド

クラスステーション<のActiveRecordを: :Base belongs_to:ユーザー has_many:calls、:foreign_key => "" end

クラスを呼び出し<はActiveRecord ::ベース にhas_many:call_details、:FOREIGN_KEY => "call_index" 終わりここ

難しさは、データベーススキーマがRailsがデフォルト(規則)によって期待するまさにではないということです。 IDを使用していない場合は、おそらくテーブルの主キーを指定する必要があります。

また、応答がコールに属し、コールがステーションに属し、ステーションがユーザーに属しているため、@ user.responsesを構築することができません。これは事実上@ user.stations.calls.responsesです。

関連する問題