0

我正在尝试使用 Rails 3.2.14 制作一个应用程序,但我无法完全理解我迄今为止建立的模型关联。我有四个模型相互连接以提供所需的结果,但到目前为止它还没有工作。

  • Job有字段:user_id,title
  • Jobapplication带有字段:job_id, user_id,isrefused
  • Resume有字段:user_id,profession

我正在尝试提取特定用户jobapplication在视图的实例变量中使用模型申请的所有作业。

所有包含外键的表在另一端都有belong_to关联。has_many

到目前为止,我在控制器中尝试过这样的操作:

def applied job
  @jobapplications = Jobapplication.where('user_id = ?', current_user.id)
  @jobs            = @jobapplications.jobs
end

目的是找到用户申请的工作。

我应该重新设计模型关联吗?

4

2 回答 2

2

如果您像这样编写模型关联,则可以大大简化访问器:

class User < ActiveRecord::Base
  has_many :jobs                  # jobs posted
  has_many :job_applications      # job applications posted
  has_many :applied_jobs, through => :job_applications, :source => :job  # jobs applied for
  has_one :resume
end

class Job < ActiveRecord::Base
  belongs_to :user
  has_many :job_applications
  has_many :applicants, :through => :job_applications, :source => :user   # applicants for this job
  has_many :applicant_resumes, :through => :job_applications, :source => :resume
end

class JobApplication < ActiveRecord::Base
  belongs_to :user
  belongs_to :job
  has_one :resume, :through => :user  # the resume for the application
end

class Resume < ActiveRecord::Base
  belongs_to :user
end

现在您可以轻松找到用户申请的职位:

current_user.applied_jobs

或特定工作的所有申请人(用户申请):

@job.applicants

你可以看到一个用户的简历:

current_user.resume

或应用程序的简历:

@job_application.resume

或所有申请特定工作的简历:

@job.applicant_resumes
于 2013-10-04T14:45:56.443 回答
1

这看起来不错:

@jobapplications = Jobapplication.where("user_id =?", current_user.id)

但不确定:

@jobs = @jobapplications.jobs

方法是什么jobs

尝试这个:

#some_controller.rb

def applied_job #note the underscore!
  @jobapplications = Jobapplication.where("user_id =?", current_user.id)
end

并且在视图中

<% @jobapplications.each do |application| %>
  #list applications here
<% end %>
于 2013-10-04T14:45:24.723 回答