2017-02-07 186 views
-3

我有两个表格场地和events,场地可以有多个活动,但一个活动只能有一个场地。Ruby on Rails查询一对多关系

API get /venues返回所有场地以及每个场地的所有赛事。 关于通过参数'occurrence_today'得到/venues?happening_today=true, 我需要显示我所有的场地,并且只有那些与今天相同的场地才会有这些事件!如果没有事件,则应显示一个空数组。

def index 

    venues = Venue.all venues = venues.eager_load(:event).where("events.start_time >= ?", Date.today) 

    venues = JSON.parse(venues.to_json(:include => [:category, :offer, :event])) 

    render json: {venues: venues}, status: 200 

end 
+0

请你能显示你写的代码到目前为止吗?请参阅:[我如何问一个好问题?](http://stackoverflow.com/help/how-to-ask) –

+0

添加一些代码好友 –

回答

1

您可以添加到您的地点模型:

has_many :todays_events, -> { where(start_date: DateTime.now.beginning_of_day..DateTime.now.end_of_day) }, class_name: 'Event' 

,然后做到这一点:

venues = Venue.includes(:todays_events) 

JSON.parse(venues.to_json(include: [:category, :offer, :todays_events])) 

负数是JSON事件的关键将是todays_events而不是事件

+0

完成! 非常感谢! –

0

假设Venue has_many :eventsEvent belongs_to :venue,你可以做这样的事情:

Venue.includes(:events).where("events.start_date BETWEEN ? AND ?", Today.beginning_of_day, Today.end_of_day) 
+1

'where(events:{start_date:Today.beginning_of_day..Today。 end_of_day})' –

+0

这不符合我的目的,因为它不会显示其余的场地,我需要显示所有场地以及今天发生的每个场地的事件。 –