Ruby on Rails "Where" 方法 Postgres



我在这里很困惑。我的事件模型有许多计划。在我的计划模型中,我有日期和县属性。计划模型属于事件。

我正在通过控制器中的参数[county_id:]进行过滤。

我想找到county_id为 0 的所有事件。

该协会是 Event.schedules.county 我已经让它适用于类似的参数搜索类别

事件belongs_to :类别 类别 has_many :活动

if params[:category].present?
@category_id = Category.find_by(name: params[:category]).id
@events = Event.where(category_id: @category_id).order("created_at DESC")
elsif params[:county].present?
@schedules = Schedule.find_by(county: params[:county])
else
@events = Event.where(status: 1).order("created_at DESC")
end

正如你在这里看到的。我可以抓住一组时间表,可以看到并event_id附加到每个时间表上。我怎样才能让我的前端可以保持循环@events变量,而不是循环遍历@schedules变量而不得不去 schedule.event.title 等

任何帮助将不胜感激。

答案如下。感谢@jvillian为我指出正确的方向。

# simple filter for category select on idex page    
elsif params[:category].present?
@category_id = Category.find_by(name: params[:category]).id
@events = Event.where(category_id: @category_id).order("created_at DESC")
elsif params[:county].present?
@events = Event.joins(:schedules).where(schedules: {county: params[:county]}).all
else
@events = Event.where(status: 1).order("created_at DESC")
end

最新更新