2009-12-12 36 views
0

我遇到了現有的ActiveRecord::Observer模型的問題,該模型記錄了User網站的各種Activities。一切都很好,直到我試圖observeUser類與Activity模型,它使用observe其他模型。考慮到:Rails用戶模型has_many活動(觀察者),但也應該被觀察到

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的查詢將返回行CommentActivities。當我在ActivityObserver添加:userobserve方法,並在User模型改變has_many :activitieshas_many :activities, :as => :itemUser.activities只返回了屬於那個User實例活動行和任何Comments

這是爲什麼?我能做些什麼來按預期工作?

回答

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字段和類型字段不能有兩個值,因此您已將其設置爲使活動指向用戶或註釋。它不能兼而有之。