2011-12-18 33 views
1

私はレールを学習しており、データベースの関連付けを把握しようとしています。 ID、名前、電子メールなどを持つユーザーと、メッセージ、送信者(ユーザー)、受信者(またはユーザー)を含むメッセージテーブルを持つデータベーステーブルがある場合は、移行をどのように設定するのですか。モデル。ここでは、Rails 3.1を使用しています。私は、メッセージテーブル内の参照のあるユーザーが1人しかいないと確信しています。ユーザーは移行中ですが、2人を設定する方法がわかりません。Railsデータベースの関連付け/移行

+0

OK、それは見えます私のモデルのように私は何かが欲しい: 'classメッセージ belongs_to: sender_idとrecipient_idの列を取得するために、移行に何を入れるのかまだ分かりません。 – slabounty

答えて

7

一部のリソースあなたが始めるために:Rails Tutorial: User ModelRoR Guides: Migrations

まず次にあなたのメッセージにモデル(/アプリ/モデルユーザー移行

$ rails generate model User name:string email:string 

そして、あなたのメッセージの移行

$ rails generate model Message message:string user_id:integer 

を作ります/メッセージ.rb)

belongs_to :user 

し、ユーザーモデル(/app/models/users.rb)

has_many :microposts 

に明らかにこれが起こるために必要なもののラフスケッチですが、それはあなたが始める必要があります!

+0

何らかの理由で自分のコメントを追加することはできませんが、あなたが行ったコメントは自分の回答を変更しません。私が投稿したリンクから少し読んだことは、私が思っていることを理解するのに役立ちます。 –

+0

ありがとう、これは私が物事を把握するために使用している本です。私は今、マイグレーションを持っています。メッセージモデルは2つあります:belongs_to lines ... belongs_to:送信者:class_name => "User"、:foreign_key => "sender_id" belongs_to:recipient、 class_name => "User"、:foreign_key => "recipient_id" 今、私はUserモデルに何が含まれるべきかわかりません。送信用と受信用の2つの "has_many"行があるはずですが、それらを指定する方法は正確にはわかりません。思考? – slabounty

+0

OK、ここに私が終わったことが書かれています。 – slabounty

0

[OK]をここで私は結局です。

まず移行...

class CreateMessage < ActiveRecord::Migration 
    def change 
    create_table :messages do |t| 
     t.string :greeting 
     t.integer :sender_id 
     t.integer :recipient_id 

     t.timestamps 
    end 
    end 
end 

次のメッセージモデルで...

# Message model 
belongs_to :sender, :class_name => "User", :foreign_key => "sender_id" 
belongs_to :recipient, :class_name => "User", :foreign_key => "recipient_id" 

とUserモデルで...

# Message model 
belongs_to :sender, :class_name => "User", :foreign_key => "sender_id" 
belongs_to :recipient, :class_name => "User", :foreign_key => "recipient_id"