2015年3月3日火曜日

saveで ActiveRecord::ReadOnlyRecordの対処方法

RailsのActiveRecordでsaveしようとしたら、ActiveRecord::ReadOnlyRecordが発生しました。
私の原因として、joinsメソッドを使って取得したレコードに対して、saveしようとしたのがダメなようです。

発生事象

ダメ例を簡単に書くと下記のようになります。

user_items = UserItems.joins(:user)

user_items.each do |user_item|
  user_item.name = 'aaaaa'
  user_item.save ## ここでエラー
end

対処方法

対象方法としては、readonly(false) メソッドを呼び出します。

user_items = UserItems.joins(:user).readonly(false) ## <= 追加

user_items.each do |user_item|
  user_item.name = 'aaaaa'
  user_item.save
end

とやると、saveに成功します。

0 件のコメント:

コメントを投稿

statistics