我遇到了现有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
,{{1} }只返回与User
实例有关的活动和不任何Comments
这是为什么?我该怎么做才能让它按预期工作?
答案 0 :(得分:1)
当你改变了
class User < ActiveRecord::Base
has_many :activities
end
到
class User < ActiveRecord::Base
has_many :activities, :as => :item
end
现在查看活动表中的item_id
字段,其中类型字段为User以撤回item_id = users.id
的活动。在查看活动中的user_id
字段之前。由于item_id
字段和类型字段不能包含两个值,因此您可以将活动指向用户或注释。它不可能都是。