代码之家  ›  专栏  ›  技术社区  ›  evanmcd

Rails未将模型字段添加到插入查询

  •  0
  • evanmcd  · 技术社区  · 14 年前

    请求参数中有正确的数据,但生成的插入查询每次都有一个空的列。

    以下是请求参数:

    {"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 回复  |  直到 14 年前
        1
  •  1
  •   Jed Schneider    14 年前

    为了回答有关attr\u访问器的问题,scope将在class方法之前调用accessors方法,因此我们将值保存到访问器,但是调用save时它将返回方法调用。我希望这能用例子来说明这一点: http://codepad.org/gAppUMc4

    同样的事我已经做过好几次了。太令人沮丧了。

        2
  •  0
  •   nfm    14 年前

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