2011-02-08 8 views
0

私はまだRubyを学んでいて、実際に何が起こっているのかをよりよく理解して、それが何をしているのかを理解したいと思っています。レールはどのように関連付けを管理しますか?

私にはユーザーがいて、各ユーザーにはエントリがあります。私のユーザークラスで 、私はエントリのテーブルは、ユーザーのための列を持っているだろうと期待していた

 
belongs_to :user 

を持って

 
has_many :entries 

と私のエントリークラスでありますが、私はそれを見ていませんよ私はデータベースを「記述する」とき。

どのようにRailsがエントリに接続しているユーザーを知っているのですか?それとも自分でフィールドを作成する必要がありますか?

私にはこれらすべての「belongs_to」などがありますが、その接続方法は明示的ではありません。

答えて

1

これはよくある誤解です。アソシエーションはデータベーステーブルを作成しません。代わりに、自分で作成する必要があります。注意する必要があるのは、Entryモデルがuser_idフィールドを持ち、アソシエーションが完全に機能するためです。私は本当に宣伝か何かしたくないだろうが、私はあなたに私が思うかなり多くを助けることができるブログの記事を作成しました:

http://www.codercaste.com/2011/02/06/rails-association-in-plain-english-what-i-wish-i-had-known-before-i-started/

+0

おかげSpyrosP、あなたのポストは、異なる種類を説明するのまともな仕事をしていません私はまだデータベース内の関連付けを作成する方法を理解しようとしています。それをする最善の方法は何ですか?私は隠されたフィールドのフォームにIDを渡すのはレールのようではないと思いますが、わかりません。 この例では、current_userからユーザーを取得できますが、後でentry_votesのような別のクラスに追加したい場合は、これらのものをリンクする方法を理解しようとしています。 – pedalpete

+0

私はあまりにも多くのことを理解しています。開始時に同じ質問がありました:)アソシエーションの場合、一度作成すると、user.entriesのようなことができます。 Railsは基本的な結合を行う責任があります。上記のあなたのassocは正しいです。次に、エントリモデルに属性としてuser_idを追加することを忘れずに、dbテーブルを作成します。 Railsは実際に隠されたものを自分自身で渡します:P Idsとフォームは実際には異なるトピックです。 http://guides.rubyonrails.org/form_helpers.htmlを見て、レールがどのようにルーティングされているかを見てみることを強くお勧めします。 – Spyros

+0

ありがとうございました。私は、モデルの関連性のために「隠されたもの」が渡されたと思っていましたが、そのようなことについてはドキュメントを見つけることができませんでした。あなたは大きな助けをしてきました。 – pedalpete

関連する問題