Rails没有添加模型字段来插入查询

时间:2010-08-04 03:47:08

标签: ruby-on-rails model null

我通过迁移向rails中的数据库添加了一个列,并更新了new.html.erb以将该字段添加到表单中。

正确的数据在请求参数中,但每次生成的插入查询都为该列的空值。

以下是请求参数:

{"commit"=>"Create",
  "assignment"=>{"start_date"=>"08/04/2010",
  "project_id"=>"5",
  "allotment"=>"50",
  "person_id"=>"33",
  "end_date"=>"08/05/2010"},
  "authenticity_token"=>"8f157a2a220caf716607162ce9557ab6505aab1a"}

以下是查询显示空列的结果错误:

Mysql::Error: Column 'end_date' cannot be null: 
INSERT INTO `assignments` (`start_date`, `created_at`, `project_id`, `updated_at`, `allotment`, `person_id`, `end_date`)
VALUES('2010-08-04', '2010-08-04 03:36:21', 5, '2010-08-04 03:36:21', 50, 33, NULL)

以下是有问题的迁移:

class ChangeDates < ActiveRecord::Migration
  def self.up
    add_column :assignments, :end_date, :date, :null => false
    rename_column :assignments, :date, :start_date
  end

  def self.down
    remove_column :assignments, :end_date
    rename_column :assignments, :start_date, :date
  end
end

我无法弄清楚出了什么问题。我已经退回并转移了几次没有运气的变化。我很难过。

2 个答案:

答案 0 :(得分:1)

为了回答关于attr_accessor的问题,scope将在类方法之前调用accessors方法,因此将值保存到访问器,但是当调用save时,它返回方法调用。我希望通过示例澄清它:http://codepad.org/gAppUMc4

我已经做了好几次同样的事情。它超级令人沮丧。

答案 1 :(得分:0)

如果您还没有,请尝试重新启动您的网络服务器。 Rails可能正在缓存列名。

您正在运行什么版本的Rails和哪些网络服务器?