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 %> 
相关问题