私は、ScheduledCourseとScheduledSessionという2つのモデルを持っています。Rails 3.仮想属性による「where」クエリの実行方法は?
scheduled_course has_many scheduled_sessions
scheduled_session belongs_to scheduled_course
ScheduledCourseが仮想属性を持っている...
def start_at
s = ScheduledSession.where("scheduled_course_id = ?", self.id).order("happening_at ASC").limit(1)
s[0].happening_at
end
... start_at仮想属性がScheduledCourseに属し、それは最古のものを選び、すべてのScheduledSessionsをチェックします。したがって、start_at
は、最初のセッションが発生した日付です。
私はコントローラに書き込む必要がありますので、今日始まったレコードだけを入手して、将来に行くことができます。また、私は過去のコースだけを取得する別のクエリを記述する必要があります。
start_at
はあなたがデータベースにない列にSQLクエリを実行することはできません仮想属性
@scheduled_courses = ScheduledCourse.where('start_at >= ?', Date.today).page(params[:page])
@scheduled_courses = ScheduledCourse.where('start_at <= ?', Date.today)
SQLite3::SQLException: no such column: start_at: SELECT "scheduled_courses".* FROM "scheduled_courses" WHERE (start_at >= '2012-03-13') LIMIT 25 OFFSET 0
コンソールでは動作しますが、Webアプリケーションでカミナリが壊れてしまい、#の 'current_page 'メソッドが未定義です –
leonel