2011-07-23 10 views
1

私はRoR noobですので、これは誰かにとっては簡単な問題かもしれません。私は2つのモデルを作成しました - ユーザーとフィードバックと私はそれらに関連付けられて2つのテーブルがあります。ユーザーとフィードバック。Ruby on Rails - 関係表を作成

今私はuser_idを1つの列として、feeback_idをもう1つの列として関係テーブルを作成したいと考えています。

モデルを作成するか、マイグレーションのみを作成しますか?私は混乱しています。

私のユーザーとフィードバックの移行は次のとおりです。

class CreateUsers < ActiveRecord::Migration 
def self.up 
create_table :users do |t| 
    t.string "first_name" 
    t.string "last_name" 
    t.string "email" 
    t.string "phone" 
    t.string "password_hashed" 
    t.string "password_salt" 
    t.boolean "isdeleted", :default => false 
    t.timestamps 
end 
end 

def self.down 
drop_table :users 
end 
end 

class CreateFeedbacks < ActiveRecord::Migration 
def self.up 
create_table :feedbacks do |t| 
    t.text "feedback" 
    t.integer "rating" 
    t.boolean "isdeleted", :default => false 
    t.timestamps 
end 
end 
def self.down 
drop_table :feedbacks 
end 
end 

ここでモデルを作成しますか? >レールはモデルFeedbackUserJoinTableを生成しますか?それともこのようなマイグレーションですか?

class CreateFeedbackUserJoinTable < ActiveRecord::Migration 
def change 
create_table :feedbacks_users, :id => false do |t| 
    t.integer :feedback_id 
    t.integer :user_id 
end 
end 
end 

答えて

2

モデルを作成する必要はありません。あなたが書いたとおりにマイグレーションを作成してください:)

+0

これらの2つのテーブルの間に関係を作成する方法を知っていますか?両方が同じファイルに入っているからでしょうか? –

3

私はthis answerhas_and_belongs_to_manyの別のSO質問が好きです。ユーザーとフィードバックの関係が単純なままであれば、基本的にHABTMの関係を使用します。

これらの関係が単純ではないことが予想される場合は、2つの間に結合モデルを作成してhas_many ..., :through => ...を使用する必要があります。このようにして、UserオブジェクトとFeedbackオブジェクトの特定のペアの関係にプロパティを追加する場合は、それらのプロパティを結合モデルで定義できます。

+0

私はRoRで合計noobです。最初に結合テーブルを作成するためにマイグレーションを作成することはできますが、後でモデルを定義することが複雑になる場合はありますか? – countdrak

+0

これは間違いなく可能です。あなたは解き放つ必要があるいくつかのスパゲッティコードがあるかもしれませんが、それは学習プロセスの一部です。また、ユーザー/フィードバックのニーズは変わらず、これはあなたにとって理想的なソリューションです。あなたが書いたことを考えれば、あなたのアプローチは意味があります。デザインのこの時点では、あなたのニーズが何であるかについて考えることはちょうど重要です。 –