Rails的用户模型的has_many活动(观察员),而且还应该观察
-
19-09-2019 - |
题
我遇到的问题与记录了ActiveRecord::Observer
网站的各种Activities
现有User
模型。一切工作得很好,直到我试图与它使用observe
其他车型相同User
模型Activity
的observe
类。认为:
class Activity < ActiveRecord::Base
belongs_to :user
belongs_to :item, :polymorphic => true
end
class ActivityObserver < ActiveRecord::Observer
observe :billing, :call, :vanity_number
end
class User < ActiveRecord::Base
has_many :comments
has_many :activities
end
class Comment < ActiveRecord::Base
belongs_to :user
has_many :activities, :as => :item
end
上面的工作得很好。一种User.activities
查询将返回Comment
Activities
行。当我加入:user
在observe
的ActivityObserver
方法和在has_many :activities
模型改变User
到has_many :activities, :as => :item
,User.activities
将只返回是属于该User
实例活动行和不强>任何Comments
这是为什么?我能做些什么来得到这个工作如预期?
解决方案
当你改变
class User < ActiveRecord::Base
has_many :activities
end
到
class User < ActiveRecord::Base
has_many :activities, :as => :item
end
它现在正在寻找在活动表中的字段item_id
其中类型字段是用户拉回活动其中item_id = users.id
。之前,它在活动看user_id
领域。由于item_id
领域和类型字段不能有两个值,你做它,以便在用户或评论的活动点。它不能是两者。
不隶属于 StackOverflow