【问题标题】:Rails User model has_many activities (observer) but should also be observedRails 用户模型 has_many 活动(观察者)但也应该被观察
【发布时间】:2010-12-25 21:49:46
【问题描述】:

我遇到了一个现有的ActiveRecord::Observer 模型的问题,该模型记录了User 站点的各种Activities。一切都运行良好,直到我尝试使用与 observe 其他模型相同的 Activity 模型来 observe User 类。考虑一下:

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 添加到ActivityObserver 中的observe 方法并将User 模型中的has_many :activities 更改为has_many :activities, :as =&gt; :itemUser.activities 将只返回与User 相关的活动的行实例和不是任何Comments

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

【问题讨论】:

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


    【解决方案1】:

    当你改变时

    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 字段和类型字段不能有两个值,因此您将其设置为活动指向用户或评论。不能两者兼有。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-20
      • 2023-04-10
      • 2012-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多