2017-02-07 182 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

這不符合我的目的,因爲它不會顯示其餘的場地,我需要顯示所有場地以及今天發生的每個場地的事件。 –