Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails ActiveRecord::MultiparameterAssignmentErrors_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails Rails ActiveRecord::MultiparameterAssignmentErrors

Ruby on rails Rails ActiveRecord::MultiparameterAssignmentErrors,ruby-on-rails,ruby,Ruby On Rails,Ruby,我的模型中有以下代码: attr_accessor :expiry_date validates_presence_of :expiry_date, :on => :create, :message => "can't be blank" 我认为: <%= date_select :account, :expiry_date, :discard_day => true, :start_year => Time.now.year, :end_year

我的模型中有以下代码:

attr_accessor :expiry_date
validates_presence_of :expiry_date, :on        => :create, :message => "can't be blank"
我认为:

<%= date_select :account, :expiry_date, :discard_day => true, :start_year => Time.now.year, :end_year => Time.now.year + 15, :order => [:month, :year]  %>
你知道问题出在哪里吗?我看了没有乐趣,所以我有点卡住了

将日期添加到select无法解决此问题

最终,我试图实现的是模型的一个属性,它不是保存到数据库中,而是经过验证的。这似乎已经适用于同一模型中的其他一些简单字符串字段,只是不适用于:expiration\u date


有什么想法吗?

如果您使用attr\u accessor,则表示您没有将该字段存储在数据库中

问题仍然在于,您不能将非持久性模型属性(即:未通过模型实际存储到数据库中)与helpers一起使用

这就是为什么Rails 3拥有ActiveModel:要使用任何对象,包括一些ActiveModel行为(通过模块包含),并与ActionPack的助手一起使用(如果我完全理解的话:)

尝试用
attr\u accessible
替换
attr\u accessible
,或者如果您想保护该字段不被大量分配,甚至可以删除该行

我希望它能有所帮助。

根据,Rails将询问全班该专栏的类型。因为该属性不是列,所以我们将得到nil,并且nil没有方法klass。所以,我刚刚为属性打了补丁。我把它放在我的类中(我的属性是
出生日期
):


也许这会有所帮助:你有没有试着删除attr_访问器?@Johnathan-你已经链接到了我自己的问题。这可能有帮助,但我怀疑;)(在类的上下文中)一种更简短、更简洁的方法是:
columns\u hash[“birth\u date”]=ActiveRecord::ConnectionAdapters::Column.new(“birth\u date”,nil,“date”)
确实更好。非常感谢。
ActiveRecord::MultiparameterAssignmentErrors in SignupController#create

/Users/x/.rvm/gems/ruby-1.8.6-p383/gems/activerecord-2.3.5/lib/active_record/base.rb:3073:in `execute_callstack_for_multiparameter_attributes'
/Users/x/.rvm/gems/ruby-1.8.6-p383/gems/activerecord-2.3.5/lib/active_record/base.rb:3028:in `assign_multiparameter_attributes'
/Users/x/.rvm/gems/ruby-1.8.6-p383/gems/activerecord-2.3.5/lib/active_record/base.rb:2750:in `attributes='
/Users/x/.rvm/gems/ruby-1.8.6-p383/gems/activerecord-2.3.5/lib/active_record/base.rb:2438:in `initialize'
def column_for_attribute_with_birth_date(name)
  if name == 'birth_date'
    return Object.new.tap do |o|
      def o.klass
        Date
      end
    end
  end
  column_for_attribute_without_birth_date(name)
end
alias_method_chain :column_for_attribute, :birth_date