假设我有两个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
,但它没有用。