我想在我的模型中进行更新
self => BookingService(id: integer, currency_code: string, total_price: integer, group_total: integer, other attrs)
但当我update(total_price:1,group_total:1)
时,我有
ArgumentError: wrong number of arguments (1 for 2)
[37] pry(BookingService)> update(total_price:1,group_total:1)
ArgumentError: wrong number of arguments (1 for 2)
from /Users/xx/.rvm/gems/ruby-2.2.0@air_api/gems/activerecord-4.1.13/lib/active_record/relation.rb:352:in `update'
[38] pry(BookingService)> self.update(total_price:1,group_total:1)
ArgumentError: wrong number of arguments (1 for 2)
from /Users/xxx/.rvm/gems/ruby-2.2.0@air_api/gems/activerecord-4.1.13/lib/active_record/relation.rb:352:in `update'
为什么会这样?
答案 0 :(得分:0)
以下是update
方法的源代码:
def update(id, attributes)
if id.is_a?(Array)
idx = -1
id.collect { |one_id| idx += 1; update(one_id, attributes[idx]) }
else
object = find(id)
object.update_attributes(attributes)
object
end
end
如您所见,该方法期望对记录的引用。
尝试这样做:
self.update(...)
self
的引用可以解决您的问题。
http://apidock.com/rails/ActiveRecord/Base/update/class
ClassMethod
。
请改为尝试:
update(id, {attr})