Rails用户模型has_many活动(观察者),但也应该遵守

时间:2009-12-12 02:21:30

标签: ruby-on-rails ruby activerecord polymorphism observers

我遇到了现有ActiveRecord::Observer模型的问题,该模型记录了Activities网站的Userobserve。一切都运行得很好,直到我尝试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

的行

这是为什么?我该怎么做才能让它按预期工作?

1 个答案:

答案 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字段和类型字段不能包含两个值,因此您可以将活动指向用户或注释。它不可能都是。