如何在has_many模型上调用clear后更新belongs_to模型

时间:2013-03-06 22:45:59

标签: ruby-on-rails ruby activerecord

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

0 个答案:

没有答案