约会属于时间表。如果不使用friendly_id,以下代码可以正常工作,以构建约会列表:
def show
@appointments = Appointment.where(schedule_id: params[:id])
end
然而,当我发送slu而不是ID时,事情会变得更复杂。 像Appointment.where(schedule.slug =" MYSLUG")之类的东西就是我喜欢做的事情,但我最终得到了这篇文章o'丑陋:
def show
@appointments = Appointment.where(schedule_id: Schedule.where(slug: params[:id]))
end
它有效,但似乎我太复杂了。
感谢接受改进此代码的建议。
答案 0 :(得分:0)
我选择了一对示波器。这有助于保持代码的可读性和可重用性(在搜索计划和约会时,您可以使用相同的Schedule.for_slug方法)。
# class Schedule
def self.for_slug(slug)
where(slug: slug)
end
# class Appointment
def self.for_schedule_slug(slug)
joins(:schedule).
merge(Schedule.for_slug(slug))
end
像这样把它们放在一起
appointments = Appointment.for_schedule_slug(params[:id])