Ruby on Rails - 创建关系表

时间:2011-07-23 20:00:33

标签: ruby-on-rails ruby-on-rails-3

我是RoR noob所以对某人来说这可能是一个简单的问题。我创建了两个模型 - 用户和反馈,我有两个与之关联的表。用户和反馈。

现在我想创建一个关系表,其中user_id为一列,feeback_id为另一列。

我是创建模型还是仅迁移?我很困惑。

以下是我的用户和反馈迁移。

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

现在我要创建一个模型??? &gt; rails生成模型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 :(得分:3)

我喜欢this answer has_and_belongs_to_many上的另一个SO问题。如果用户和反馈之间的关系仍然很简单,基本上使用HABTM关系。

如果您预见这些关系不会保持简单,则应在两者之间创建连接模型并使用has_many ..., :through => ...。这样,当您想要为特定的User对和Feedback对象之间的关系添加属性时,您可以在连接模型上定义这些属性。

答案 1 :(得分:2)

您无需创建模型。只需按照您的编写创建迁移:)