私は奇妙なことに遭遇しました。私はモデルGuardianUpdateを持っていて、 "read"というフィールドはブール値です。レコードに対してupdate_attribute(:read、true)を呼び出すと、実際にはレコードが更新されません。ここでRailsのupdate_attributeが保存されていません
は私のコンソール出力です:
1.9.3p0 :026 > g = GuardianUpdate.find(1)
GuardianUpdate Load (0.7ms) SELECT `guardian_updates`.* FROM `guardian_updates` WHERE `guardian_updates`.`id` = 1 LIMIT 1
=> #<GuardianUpdate id: 1, update_id: 2, guardian_id: 11, read: true, created_at: "2012-04-21 04:06:45", updated_at: "2012-04-21 04:06:45">
1.9.3p0 :027 > g.update_attribute(:read, false)
(0.3ms) BEGIN
Update Load (0.4ms) SELECT `updates`.* FROM `updates` WHERE `updates`.`id` = 2 LIMIT 1
(0.1ms) COMMIT
=> true
1.9.3p0 :028 > g.reload
GuardianUpdate Load (0.5ms) SELECT `guardian_updates`.* FROM `guardian_updates` WHERE `guardian_updates`.`id` = 1 LIMIT 1
=> #<GuardianUpdate id: 1, update_id: 2, guardian_id: 11, read: true, created_at: "2012-04-21 04:06:45", updated_at: "2012-04-21 04:06:45">
1.9.3p0 :029 >
あなたが言うことができるように、どこにもUPDATEのSQL文はありません。 GuaridanUpdateモデル:
class GuardianUpdate < ActiveRecord::Base
belongs_to :update
belongs_to :guardian
end
ご意見はありますか?
私はそのupdate_columnに言及してはならない(:読み取り、真の)動作しますが、全く問題。
'g.update_attributes!(:read => false)'を実行するとどうなりますか? –
何もありません。エラーなし、更新なし...何もありません。 –