给出一个模型事件
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 :(得分: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 %>