我遇到的问题与记录了ActiveRecord::Observer网站的各种Activities现有User模型。一切工作得很好,直到我试图与它使用observe其他车型相同User模型Activityobserve类。认为:

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行。当我加入:userobserveActivityObserver方法和在has_many :activities模型改变Userhas_many :activities, :as => :itemUser.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领域和类型字段不能有两个值,你做它,以便在用户或评论的活动点。它不能是两者。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top