Mysql を使用COALESCE
すると、テーブル内の空の値のみを更新できます。
Rails (ActiveRecord) でこれを行うにはどうすればよいですか?
テーブル内の各列に対してステートメントを作成したくないのでif
、メソッドに ActiveRecord ハッシュを渡す場合、それを行う方法が必要だと推測していますupdate_attributes
。
ありがとう。
Mysql を使用COALESCE
すると、テーブル内の空の値のみを更新できます。
Rails (ActiveRecord) でこれを行うにはどうすればよいですか?
テーブル内の各列に対してステートメントを作成したくないのでif
、メソッドに ActiveRecord ハッシュを渡す場合、それを行う方法が必要だと推測していますupdate_attributes
。
ありがとう。
あなたが何を求めているのかは明確ではありませんが、私が正しく理解していれば、次のようなものが必要です。
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」メソッドに使用します。