0

さまざまなサイトを記録する既存のActiveRecord::Observerモデルで問題が発生しています。他のモデルに使用するのと同じモデルでクラスを試すまで、すべてがうまく機能していました。次のことを考慮してください。ActivitiesUserobserveUserActivityobserve

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し、モデルを に変更するとすぐに、そのインスタンスに関連するアクティビティである行のみが返され、何も返されません。observeActivityObserverhas_many :activitiesUserhas_many :activities, :as => :itemUser.activitiesUserComments

どうしてこれなの?これを期待どおりに機能させるにはどうすればよいですか?

4

1 に答える 1

1

変わった時

class User < ActiveRecord::Base
  has_many :activities
end

class User < ActiveRecord::Base
  has_many :activities, :as => :item
end

item_idタイプ フィールドが User to pull back activities where であるアクティビティ テーブルのフィールドを見ていitem_id = users.idます。以前user_idは活動中の現場を見ていました。item_idフィールドとタイプ フィールドは 2 つの値を持つことができないため、アクティビティがユーザーまたはコメントのいずれかを指すように作成しました。両方はあり得ません。

于 2009-12-12T04:37:23.237 に答える