我更喜歡使用包含來連接我的三個表。我有三個模型需要連接,例如注冊、學生和計劃。這是我的模特協會
class Student < ApplicationRecord
belongs_to :register
end
class Register < ApplicationRecord
has_one :student
belongs_to :schedule
end
class Schedule < ApplicationRecord
belongs_to :course
belongs_to :teacher
has_many :days, :dependent => :destroy, :class_name => 'ScheduleDay'
has_many :registers
end
這是我的控制器
def index
@students = Student.includes([register: :schedule])
@students = @students.order 'students.created_at DESC'
if params[:status_id] && params[:status_id].to_i > 0
@students = @students.where 'students.status_id = ?', params[:status_id]
end
if params[:id] && params[:id].to_i > 0
@students = @students.where 'cast(students.id as varchar) like (?)', "%#{params[:id]}%"
end
if params[:full_name] && params[:full_name].to_s.length > 0
@students = @students.where 'lower(registers.name_in_indonesian || registers.name_in_chinese) like lower(?)', "%#{params[:full_name]}%"
end
if params[:course_id] && params[:course_id].to_i > 0
@students = @students.where 'schedules.course_id = ?', params[:course_id]
end
@students = @students.paginate(page: params[:page], per_page: 30)
end
我收到以下錯誤:
PG::UndefinedTable: ERROR: missing FROM-clause entry for table "schedules"
LINE 1: SELECT "students".* FROM "students" WHERE (schedules.course_...
我嘗試使用 rails 控制臺進行除錯,但最終得到(物件不支持 #inspect)

uj5u.com熱心網友回復:
我認為您正在進行一些未遷移的遷移。請跑
耙資料庫:遷移
運行上述命令后,重新啟動 rails 控制臺,然后嘗試相同的操作。您不會收到此錯誤。
uj5u.com熱心網友回復:
如果你想查詢它們,你需要加入這些表,includes這還不夠:
@students = Student.joins(register: :schedule)
或添加references電話:
@students = Student.includes(register: :schedule).references(register: :schedule)
includes 將減少訪問包含表的資料庫查詢的數量,但它不會加入表。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/390032.html
