【发布时间】:2011-08-29 12:47:31
【问题描述】:
我有以下设置,我想确保我的品牌模型中的所有品牌都属于我的用户模型中的所有用户。我还想确保一旦创建了一个品牌,它属于所有用户,它也将属于未来注册的用户。
品牌模型
has_many :brand_users
has_many :users, :through => :brand_users
after_create :associate_with_all_users
def associate_with_all_users
User.find(:all).each do |user|
users << user
end
save
end
品牌用户模型
belongs_to :brand
belongs_to :user
用户模型
has_many :brand_users
has_many :brands, :through => :brand_users
当我在控制台中尝试以下操作时,它显示当前最后一个品牌实例仅属于单个用户,而不属于两者(当前存在 2 个用户)。
>> User.all.count
=> 2
>>BrandUser.last.user_id
=>1 #Should not belong to just the one user but both
【问题讨论】:
-
只是为了确认一下,BrandUser.count == 1?此外,您应该能够执行 self.users = User.all 而不是循环。
-
不,BrandUser.count == 4(现在,虽然它会上升很多,比如 200)。
-
目前有多少品牌和用户?
-
4 个品牌和 2 个用户。奇怪的是,该协会给出了 User.first.brands.count == 3 和 User.last.brands.count == 1
-
在下面查看我的答案,看看是否适合您
标签: ruby-on-rails ruby-on-rails-3 models has-many-through