我有两个模型:项目和时间表。项目has_one计划和计划belongs_to项目。创建项目后,项目中涉及的员工之一将最终创建计划。我正在尝试创建一个页面,显示雇主他们所有有计划的项目。在scheduleles控制器中,我尝试了以下代码:
def show_incomplete_schedules_to_employers
@schedules = Schedule.where("project.employer_id = ?", current_user.id).all
@projects = @schedules.collect{|schedule| schedule.project}
end
但是会返回错误:
ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR: missing FROM-clause entry for table "project"
LINE 1: SELECT "schedules".* FROM "schedules" WHERE (project.employ...
^
: SELECT "schedules".* FROM "schedules" WHERE (project.employer_id = 32)):
app/controllers/schedules_controller.rb:174:in `show_incomplete_schedules_to_employers'
我如何访问雇主时间表?
答案 0 :(得分:0)
您应该将此添加到您的雇主模型中:
has_many :schedules, through: :projects
然后访问它:
current_user.employer.schedules
您需要@projects
和@schedules
作为什么?
答案 1 :(得分:0)
从我猜测你试图做的事情来看,我会使用连接来解决这个问题。像这样:
def show_incomplete_schedules_to_employers
@schedules = Schedule.joins(:projects).where("projects.employer_id = ?", current_user.id)
@projects = @schedules.collect{ |schedule| schedule.project }
end
projects
子句where