【发布时间】:2018-12-10 12:23:15
【问题描述】:
我创建了一个新的迁移,将名为transferred 的列添加到advance_payments 表中。
class AddTransferredToAdvancePayments < ActiveRecord::Migration[5.0]
def change
add_column :advance_payments, :transferred , :boolean, default: false
end
end
迁移后,schema.rb中确实存在该列:
create_table "advance_payments", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t|
...
t.boolean "transferred", default: false
...
end
控制台
但是当我在控制台中检查 AdvancePayment 对象时,没有名为 transferred 的列
AdvancePayment.last.transferred 或 AdvancePayment.last.transferred?
NoMethodError: 未定义的方法 `transferred'
[1] pry(main)> AdvancePayment.last
AdvancePayment Load (0.5ms) SELECT `advance_payments`.* FROM `advance_payments` ORDER BY `advance_payments`.`id` DESC LIMIT 1
=> #<AdvancePayment:0x0000000747e468
id: 107,
...
// all columns except "transferred"
[10] pry(main)> AdvancePayment.has_attribute?(:transferred)
=> false
我尝试db:migrate 和db:schema:load 得到相同的结果。
我还尝试drop,而不是重新创建数据库,关闭然后重新打开服务器,没什么更好的。
【问题讨论】:
-
transferred?和transfrerred=怎么样 - 这些存在吗? -
退出控制台并重新进入。
-
@JagdeepSingh 我编辑了我的帖子。不起作用:/
-
@meta 也不起作用
-
检查您的 INNODB 数据库,如果您看到该列,请告诉我们
标签: ruby-on-rails activerecord schema