【发布时间】:2012-11-10 02:59:21
【问题描述】:
使用 Mysql,我可以使用 COALESCE 仅更新表中的空值。
如何使用 Rails (ActiveRecord) 做到这一点?
我不想为表中的每一列创建if 语句,并且我猜测如果我将 ActiveRecord 哈希传递给update_attributes 方法,就必须有办法做到这一点。
谢谢。
【问题讨论】:
标签: activerecord ruby-on-rails-3.2 padrino
使用 Mysql,我可以使用 COALESCE 仅更新表中的空值。
如何使用 Rails (ActiveRecord) 做到这一点?
我不想为表中的每一列创建if 语句,并且我猜测如果我将 ActiveRecord 哈希传递给update_attributes 方法,就必须有办法做到这一点。
谢谢。
【问题讨论】:
标签: activerecord ruby-on-rails-3.2 padrino
不清楚你在问什么,但如果我理解正确,你想要这样的东西:
class Address < ActiveRecord::Base
attr_accessible :street, :city, :zip
def update_null_attributes(hash)
update_attributes(hash.keep_if { |k,v| __send__("#{v}_was").nil? })
end
end
这将获取您要更新的属性的哈希值,并仅传递最初为 nil 的属性。它将ActiveModel::Dirty 用于“#{v}_was”方法。
【讨论】: