Ruby on rails 如何调用ActiveRecord::Base';什么是负荷法?
要在基于ActiveRecord的模型中执行特殊类型的验证,我需要手动执行更新\u属性步骤: 加载(参数)&保存 但当我尝试在模型的实例(mymodel.load(params))上调用“load”时,它会在ActiveSupport上调用“load”,试图加载一个文件 有没有办法告诉Rails使用ActiveRecord方法 谢谢 问候Ruby on rails 如何调用ActiveRecord::Base';什么是负荷法?,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,要在基于ActiveRecord的模型中执行特殊类型的验证,我需要手动执行更新\u属性步骤: 加载(参数)&保存 但当我尝试在模型的实例(mymodel.load(params))上调用“load”时,它会在ActiveSupport上调用“load”,试图加载一个文件 有没有办法告诉Rails使用ActiveRecord方法 谢谢 问候 Marc直接来源于来源: # File activerecord/lib/active_record/base.rb, line 2665 def updat
Marc直接来源于来源:
# File activerecord/lib/active_record/base.rb, line 2665
def update_attributes(attributes)
self.attributes = attributes
save
end
实际上,它是rails 2,但我想它并没有改变太多。我想您需要
ActiveRecord::Base
的assign\u属性
方法
我使用的是Rails 3.1.3,但希望这对您来说是正确的
粘贴的
update_属性
源属于ActiveResource::Base
,而不是ActiveRecord::Base
。我自己也犯了这个错误:ActiveRecord::Base
不提供load
方法。相反,调用了Object
的load
方法,它似乎是由ActiveSupport-3.1.3/lib/active\u support/dependencies.rb
中的ActiveSupport的Loadable
模块提供的?一般来说,如果你反对框架,你就是在“做错事”。这是关于一个事件:如果它是过去的,你是不允许改变它的。但是一个简单的验证是不起作用的,你可以把日期改成将来的日期。所以我必须检查参数。因为这感觉像是在与框架作斗争,所以我希望Rails解析参数并检查对象本身。通过覆盖update_属性,如果出现问题,我也可以中止保存。哦,对了,我忘了告诉你我正在使用Rails 3。源代码已根据api dock进行了更改:#文件activeresource/lib/active_resource/base.rb,第1267行def update_attributes(attributes)load(attributes)and save end
是的,正是我要找的!非常感谢。