未定义的方法'add_reference'

时间:2013-08-29 11:40:36

标签: ruby-on-rails activerecord

我正在尝试使用以下代码为我的帖子表添加用户引用:

class AddUserIdToPosts < ActiveRecord::Migration
  def change
    add_reference :posts, :user, index: true
  end
end

但我收到了一条错误消息:

undefined method 'add_reference'

任何人都知道如何解决这个问题?

我正在使用Rails 3.2.13

5 个答案:

答案 0 :(得分:16)

在Rails 3中你必须这样做

class AddUserIdToPosts < ActiveRecord::Migration
  def change
    add_column :posts, :user_id, :integer
    add_index :posts, :user_id
  end
end

只有在Rails 4中,您才能按照发布的方式进行操作。

答案 1 :(得分:3)

add_reference特定于rails 4.0.0,所以你应该尝试这样做:

class AddUserIdToPosts < ActiveRecord::Migration
  def change
    add_column :posts, :user_id, :integer
    add_index :posts, :user_id
  end
end

关于这个主题,这是一个很棒的post

答案 2 :(得分:3)

您的迁移应该是

rails generate migration AddUserRefToPosts user:references 

答案 3 :(得分:2)

这个怎么样:

def change
  change_table :posts do |p|
    p.references :user, index: true
  end
end

答案 4 :(得分:1)

此方法显示在Rails 4.0

我认为你可以为Rails 3.2创建一些具有此功能的猴子补丁