2010-11-25 13 views
0

こんにちは。 Rails Model Association Confusion

  • サイト
  • Eventsは、基本的には、 "ログ項目" あるユーザーを

  • ロック
    • カテゴリー
    • イベント
    • 項目
    • :私は、次のモデルを持っています。言い換えれば、どのような行動が行われたのかをItemUserで示しています。Categoryです。当然、私はこれを考えたとき、「1人のユーザを持っている」、「1つのカテゴリを持っている」、「1つのアイテムを持っている」などと考えました。しかし、これは、与えられたUser行にEventの外部キーがあることを意味しますが、これは私が望むものではありません。私はEvent以来ただ、何Userに関する情報を与えている、Event行の外部キーを望むものCategoryなど

      だから私の理解は、私が代わりにEventは、「ユーザーに属する」と言うべきであるということです、 「カテゴリに属しています」などと、それぞれの「多くのイベントがある」ということが返されます。他のほとんどの団体と同じように論理的に読まないので、私は確信しています。あまり意味をなさないので、反対側(つまり、user.event)からイベントにアクセスする必要はありません。だから私がこれを行うと、ちょうどbelongs_toコールを追加し、反対側にhas_oneを追加しないだろうか?

      おそらく私はこれを間違って設計しました。私は最終的に行で満たされた「ログ・ページ」をレンダリングすることができるようにしたい

      、行に達するように少し何か説明:私がアクセスできるようにしたい/必要はありません

      event.user event.action event.item event.category 
      
    +0

    acts_as_auditedを見ましたか?それはあなたが箱から見ているものとまったく同じではありません。しかし、最小限の努力で可能になります。 – EmFi

    答えて

    1

    を 他の側からのイベント(つまり、 user.event)は という意味にはなりません。だから、もし私がこれを行うと、 ちょうどbelongs_toコールを追加し、反対側には has_oneを追加しないでしょうか?

    それらの両方(belongs_tohas_many)を追加します。確かに、user.eventは意味がありませんが、user.eventsは意味があります。

    +0

    これは本当です。どうもありがとう!だから私はそれを取る私は私の結論で正しいですか?イベントbelongs_toユーザー、ユーザーhas_manyイベント? –

    +0

    はい、そうです。 – rwilliams

    1

    はい、has_many & belongs_toという関連付けを使用します。 Activerecordのコンテキストでは、belongs_toの必要性を定義するのはhas_manyです。 "あるモデル(a)が他のモデル(b)のhas_manyであれば、その関連モデル(b)は最初のモデル(a)に属します"。

    ユーザには多くのイベントが関連付けられているため、イベントはユーザに属します。

    一方、ユーザーに関連付けられているイベントが1つだけだった場合、これらのモデルには「has_one」関連があります。

    +0

    ありがとう!それは有り難いです。 –