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 件のコメント:
コメントを投稿