0
したがって、readonly?
メソッドでは、アクティブレコードクラスでいくつかの問題があります。 joins
を呼び出してフェッチされたものが読み取り専用に設定されていることが表示され、このエラーに例えばRuby on Rails: 'joins'で選択されたものはすべて読み取り専用です
ActiveRecord::ReadOnlyRecord: ActiveRecord::ReadOnlyRecord
をスロー:
# fine
User.first.readonly?
User.first.save
# not fine
User.joins(:memberships).first.readonly?
# false
User.joins(:memberships).first.save
# ActiveRecord::ReadOnlyRecord
これがロードされたレコード」のためにfalseに設定されますRails documentationによると、ピギーバック属性との結合を介して。
私が知っている限り、ここにはピギーバック属性は含まれていません。
私はこの制限を強制的に回避することができますが、私はシステムを不必要にハッキングしているように感じます。
user = User.joins(:memberships).first
User.instance_variable_set(:@readonly, false)
user.save
誰もが読取り専用アイテムを返す理由を知っていますか?これを防ぐことはできますか? (私は関連するオブジェクトから任意の属性を選択しようとしていません)。
私はRailsのバージョン3.2.22.5にルビーを使用しています、それはこのようになりますがRailsの以前のバージョン3.
FWIW、Rails 3.2は5歳以上です。それが解放されたとき、Siriはまったく新しいものだった。金正日はまだ北朝鮮の頭であり、Lyftはまだ立ち上げていなかった。これはもはやRailsチームによってサポートされなくなり、もはや安全であるとはみなされなくなりました。新しいバージョンのRailsでこの動作が引き続き発生する場合は、更新するか、新しい質問をしてください。 – coreyward
@coreywardあなたはその情報を提供できたことをとてもうれしく思っています。私は洞窟に住んでいるので、私はそれのいずれかについての手がかりを持っていませんでした。 – AJFaraday
ああ、あなたも[これはここに修正されました](https://github.com/rails/rails/pull/10769)に気づいています。他の人が自分の時間を寄付してくれたため、無料でダウンロードできますあなたのためにそれを解決するには、ダウンロードして使用するだけです。しかし、ちょっと、皮肉なことを続けて、私たちは*あなたのためにすべてをやっていないための変態者だと主張する。 – coreyward