MysqlではCOALESCE
を使用してテーブル内のemtpyの値のみを更新できます。Rails(ActiveRecord)合体またはテーブルの空の値のみを更新する方法
Rails(ActiveRecord)でどうすればいいですか?
if
ステートメントをテーブル内の各列に作成する必要はありません。update_attributes
メソッドにActiveRecordハッシュを渡すと、それを行う方法があるはずです。
ありがとうございました。
MysqlではCOALESCE
を使用してテーブル内のemtpyの値のみを更新できます。Rails(ActiveRecord)合体またはテーブルの空の値のみを更新する方法
Rails(ActiveRecord)でどうすればいいですか?
if
ステートメントをテーブル内の各列に作成する必要はありません。update_attributes
メソッドにActiveRecordハッシュを渡すと、それを行う方法があるはずです。
ありがとうございました。
それはあなたが求めているものをそれほど明確ではないのですが、私が正しく理解していれば、あなたはこのような何かしたい:
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
これは、あなたが更新したものだけを渡したい属性のハッシュを取るだろうしもともとはゼロ。 "#{v} _was"メソッドにはActiveModel::Dirty
が使用されます。
この回答をダウンした人は誰ですか?理由を分かち合いたいですか?私はそれが間違っていない場合、私は答えを向上させることはできません。 –
これはアトミックではないため、ほとんどの場合下線が引かれていました。 2つのリソースが同じレコードを一度に読み取ると、最初の書き込みが失われます。レコードをロックする必要があります。 – zach