def show_user_events
user = current_user
@join_events = JoinEvent.find_all_by_user_id(user.id)
# @events = Event.where(:id => @join_events)
respond_to do |format|
format.html # show_user_events.html.erb
format.json { render json: @events }
end
end
我想在'事件'中获取具体值。 'event_id'是'JoinEvent'的属性之一。 使用'@join_events'的'event_id'值, 我想获得与SQL查询中的命令相同的效果。
SELECT * FROM events
WHERE id in (join_events[1].event_id, join_events[2].event_id, ...)
我应该怎么做才能在铁轨中实现这种效果?
答案 0 :(得分:1)
至少有两种方法分别隐式或明确地执行此操作:
JoinEvent.find([1, 2, 3]) # short for JoinEvent.where(id: [1, 2, 3])
JoinEvent.where(event_id: [1, 2, 3])
JoinEvent.where("event_id IN (?)", [1, 2, 3])
我更喜欢第一种方法
因此,在您的情况下,您可以通过以下方式收集ids
@join_events = JoinEvent.where(user_id: current_user.id)
@join_events_ids = @join_events.pluck(:id)
或(更喜欢的方式)
current_user.join_event_ids
附带has_many
关联
collection_singular_ids
返回关联对象'ID的数组
答案 1 :(得分:0)
JoinEvent.where(:event_id => [@join_events.map(&:id)])