9

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

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

但我收到一条错误消息:

undefined method 'add_reference'

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

我正在使用 Rails 3.2.13

4

5 回答 5

16

在 Rails 3 中你必须这样做

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

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

于 2013-08-29T11:44:16.073 回答
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

这是一篇关于这个主题的好文章

于 2013-08-29T11:52:37.107 回答
3

您的迁移应该是

rails generate migration AddUserRefToPosts user:references 
于 2013-08-29T12:04:39.747 回答
2

这个怎么样:

def change
  change_table :posts do |p|
    p.references :user, index: true
  end
end
于 2013-08-29T11:44:49.480 回答
1

此方法出现在 Rails 4.0 中

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

于 2013-08-29T11:44:37.333 回答