我有两个桌位和events
,场地可以有多个活动,但一个活动只能有一个场地。
API get /venues
返回所有场地,每个场地都有所有活动。
在传递一个参数'happenning_today'得到/venues?happening_today=true
时,
我需要显示我的所有场地,并且只显示每个场地的事件,其中start_date
与今天相同!如果没有事件,则应显示空数组。
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 :(得分:1)
您可以将其添加到Venue模型中:
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 而不是事件。
答案 1 :(得分:0)
假设Venue has_many :events
和Event belongs_to :venue
,您可以执行以下操作:
Venue.includes(:events).where("events.start_date BETWEEN ? AND ?", Today.beginning_of_day, Today.end_of_day)