ActiveRecord的珍藏级关系存取

给定一个模型事件,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'); 

回答:

没有,没有为事件的集合的关系访问。

在此期间,你可以这样做:

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 %>

以上是 ActiveRecord的珍藏级关系存取 的全部内容, 来源链接: utcz.com/qa/261117.html

回到顶部