我是Rails的新手。我正在嘗試製作一個應用程序,讓學生可以登錄 並註冊考試。我有一個過濾數據的問題,其中 學生只能看到屬於她/他的年份和部門的考試。在Rails中訪問另一個模型的屬性
主題有以下欄目: t.string "name"
t.integer "ects"
t.integer "year"
t.integer "professor_id"
(這涉及到 教授外鍵)。
及其與考試的關係: has_one :exam
考試有以下欄目: t.date "start_date"
t.string "department"
t.integer "professor_id"
t.integer "subject_id"
及其與考試的關係: belongs_to :subject
用戶具有屬性一年(一年研究)和dep artment。問題是 考試只有depatment,但它沒有一年。
我在exam.rb
scope :department, -> (department) { where('department == ?',
department) }
scope :year, -> (year) { where('subject.year == ?', year) }
那時,我便在考試控制器(索引操作)和 這些方法使這個傳遞的數據:
@exams = Exam.department(current_user.department) && Exam.year(current_user.year)
有一個問題範圍年,它不承認主題。當 我試圖訪問考試列表它說: SQLite3 :: SQLException:no such column:subject.year:SELECT「exams」。* FROM「exams」WHERE(subject.year == 2)
但是,當我包括subject_id:範圍:年, - >(年){ where('Subject.find(:subject_id).year ==?',year)} 它說有一個語法錯誤: SQLite3 :: SQLException:near「(」:syntax error:SELECT「exams」。* FROM「exams」WHERE(Subject.find(:subject_id).year == 2)。
我試着通過使用訪問主題屬性代表和 to_params,但它沒有幫助。 en谷歌搜索這個問題更多 比10天,但我一直無法找到解決方案。
我很欣賞任何形式的幫助。在此先感謝:)
我已經試過這樣的事情,但問題是「一年」,因爲它是另一種模式的屬性:主題。 SQLite3 :: SQLException:沒有這樣的列:exams.year:SELECT「考試」。 AND「exams」。「year」= 2我會嘗試將@subjects = Subject.all放在考試控制器的索引操作中。 – Aida
我剛剛通過current_user.year而不是2016年,它的工作。我一直都不知道加入是一個問題。非常感謝。 – Aida