rails - 无法访问属于另一个模型的模型

时间:2014-02-05 19:11:29

标签: ruby-on-rails ruby ruby-on-rails-4 rails-activerecord

我有两个模型:项目和时间表。项目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'

我如何访问雇主时间表?

2 个答案:

答案 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