0

給定一個模型事件,ActiveRecord的珍藏級關係存取

has_many :user_events 

和模型UserEvent其

belongs_to :event 

我可以從一個單一的事件對象來獲取相關user_events,就像這樣:

event = Event.find(1) 
user_events = event.user_events 

但是有一個等效的關係存取器的事件集合?例如:

events = Event.where(:event_type => 'fun') 
user_events = events.user_events 

這將返回屬於使用類似的任何「有趣」的事件user_events。

SELECT user_events.* FROM user_events JOIN events on (events.id = user_events.event_id) where (events.event_type = 'fun'); 

回答

0

沒有,沒有爲事件的集合的關係訪問。

在此期間,你可以這樣做:

events = Event.includes(:user_events).where(:event_type => 'fun') 
user_events = events.map(&:user_events).flatten 

user_events都渴望加載感謝includes(:user_events)。這是常用的。

我們使用相同的邏輯,當我們做這樣的事情(簡體):

# controller 
@posts = Post.includes(:comments) 

# view 
<% @post.each do |post| %> 
    # display your post 
    <% post.comments.each do |comment| %> 
    # display each comment 
    <% end %> 
<% end %> 
相關問題