2 つの ActiveRecord モデルがあるとします (移行は含めません)。
class User < ActiveRecord::Base
belongs_to :subscription, :inverse_of => :users
end
と
class Subscription < ActiveRecord::Base
has_many :users, :inverse_of => :subscription
end
rails console
モデルごとに新しいオブジェクトを作成し、サブスクリプション モデルにユーザーを追加できます。
>> s = Subscription.create
=> #<Subscription id: 1>
>> u = User.create
=> #<User id: 1, subscription_id: nil>
>> s.users << u
=> [#<User id: 1, subscription_id: 1>]
>> u
=> #<User id: 1, subscription_id: 1>
しかし、Array.clear メソッドを使用すると、コレクションはクリアされますが、関連付けられたモデルはすぐには更新されません。
>> s.users.clear
=> []
>> u
=> #<User id: 1, subscription_id: 1>
呼び出すu.reload
と、データベースから最新バージョンが取得されますが、キャッシュされたモデルを更新するためにそれを行う必要はありません。Bi-Directional Associations:inverse_of
で提案されているように使用してみましたが、うまくいきませんでした。