1

过去一个小时在 heroku 上运行 migrate 想知道为什么以下 migrate 没有将主键设置为id我想要的:

class CreateProducts < ActiveRecord::Migration
  def change
    create_table :products, :primary_key => :product_id do |t|
      t.string  :name
    end
  end
end

然后我认为我传递参数的方式可能有问题,所以我将其更改为

class CreateProducts < ActiveRecord::Migration
  def change
    create_table :products, {:primary_key => :product_id} do |t|
      t.string  :name
    end
  end
end

id突然之间,Rails在执行连接时不再尝试查找列。

这可能有点模糊,但为什么大括号很重要?我的印象是,从 Ruby 2.0.0 开始,传递给方法的尾随命名参数会被自动视为哈希(在部署期间,它说我使用的是 ruby​​ 2.0.0)

(我假设create_table ...是一个方法调用)

4

0 回答 0