2011-06-01 105 views
0

我使用has_and_belongs_to_many建立關係來關聯用戶和事件。然後我試試這個:has_and_belongs_to_many關係不關聯兩種方式

user = User.find(1) 
event = Event.find(1 

這兩種目前沒有相關的...然後我嘗試將它們做關聯:

user.events << event 

這一行動工作......但是,它們不會彼此正確關聯:

user.events正確地爲該用戶列出事件...但是event.users沒有與該用戶關聯的用戶。

我該如何做到這一點,以便當我將一個人與另一個人(事件與用戶或用戶事件)...它會自動關聯另一種方式?

回答

1

has_and_belongs_to_many是否存在於兩種模型中?這聽起來像它不是,而它should be

# models/user.rb 
class User < ActiveRecord::Base 
    has_and_belongs_to_many :events 
end 

# models/event.rb 
class Event < ActiveRecord::Base 
    has_and_belongs_to_many :users 
end 
+0

是的,它們都存在。我檢查了數據庫,它似乎正在工作... 也,我得到它的工作,當我做event.users.all而不是隻是event.users ...任何理由,只會這樣工作? – 2011-06-01 07:21:51

+0

我的猜測是由於緩存,但我需要在做任何語句之前看到代碼。清除緩存模型已解決[在這個問題](http://stackoverflow.com/questions/3599875/disable-sql-cache-temporary-in-rails)。 – Sorrow 2011-06-01 07:45:23

0

假設你的鏈接是正確設置,您可以測試:

user.events << event 
event.reload.users 

這將明確從數據庫中重新加載數據,而不是使用本地緩存版本。如果你曾經訪問過這個關聯關係,那麼它就不會再在數據庫中查找它,除非你明確地問它。

這有幫助嗎?

相關問題