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 

The 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 %> 
Смежные вопросы