3

我对rails比较陌生。我正在尝试在 Rails 中设置一对多关联。但是,我认为我的 foreign_key 做错了,因为我的测试失败了。我的测试如下:

在 user_spec 中:

  it {should have_many :invitations}

用户型号:

  has_many :invitations

邀请模型:

belongs_to :sender, :class_name => "User"

邀请迁移:

class CreateInvitations < ActiveRecord::Migration
  def change
    create_table :invitations do |t|
      t.integer :sender_id
      t.string :token

      t.timestamps
    end
  end
end

我从测试中得到的错误是:

Failure/Error: it {should have_many :invitations}
       Expected User to have a has_many association called invitations (Invitation does not have a user_id foreign key.)

我不确定我哪里出错了。有任何想法吗?

4

2 回答 2

4

错误表明问题不在belongs_to,而是在has_many

 has_many :invitations , :foreign_key => "sender_id"
于 2012-04-22T20:34:35.910 回答
3

菲弗尔是对的。您刚刚使用别名来关联到 User 类。将列名更改为user_id或告诉 rails 使用另一个外键:

邀请.rb

belongs_to :sender, :class_name => "User"

用户.rb

has_many :invitations, :foreign_key => "sender_id"
于 2012-04-22T20:24:42.113 回答