我有两个桌子场地,events
,一个场地可以有多个活动,但一个活动只能有一个场地。
API get /venues
返回所有场地,以及每个场地的所有事件。在传递参数"happening_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
您可以将以下内容添加到您的场地模型中:
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 而不是事件。
假设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)