我意识到有几个关于这个问题的SO问题和this one描述它非常密切,但没有被接受或后续。Rails新模型字段抛出未定义的方法错误
我已经使用迁移为模型添加了一个新字段'is_ignored';该字段已经在mysql数据库中。该字段在schema.rb中列出,并在模型定义中标记为attr_accessible,但在尝试分配值时仍会引发未定义的方法错误。
以下是我正在处理的内容。
迁移(工程及填充字段如预期):
def self.up
add_column :user, :is_ignored, :boolean
User.reset_column_information
User.find(:all).each do |p|
p.update_attribute :is_ignored, false
end
模式(注意 “去宣言”,在RM需要我在这里,因为它会工作领域):
create_table "users", :force => true do |t|
...
t.datetime "updated_at"
t.boolean "is_ignored"
end
控制器:
params[:selected_users].each do |id|
@user = User.find(id)
@user.is_ignored = false #here is where the error is being thrown
@user.save
end
我有很多时间投入到控制器到目前为止,宁可不打击如果我不是绝对必须的话,它就会重新搭起脚手架。是否还有一些手动将新字段添加到我可能忽略的模型中?
编辑:
我也验证了我可以访问此领域中,距离轨道控制台的值,并在执行呼叫时@user是不是在我的控制器零;但它仍然会抛出这个undefined_method错误。
第二个编辑:
所以这是很酷;朋友建议更换这种方法如下所示:
@user.update_attribute(:is_ignored, false)
我们期望能够工作,但没有!它抛出了与以前一样的未定义方法错误...
什么是实际的错误消息/堆栈跟踪? –
此外 - 你确定你已经迁移到正确的环境? –
我其实回答了下面的问题;调试器显示id对象我被灌入do块是一个哈希数组,我把它当作一个ID数组来处理...... – BrMcMullin