0

Rails 3.2.14 を使用してアプリケーションを作成しようとしていますが、これまでに作成したモデルの関連付けに頭を悩ませることができません。望ましい結果を得るために相互接続された 4 つのモデルがありますが、これまでのところ機能していません。

  • Jobフィールド付き: user_id,title
  • Jobapplicationフィールド: job_iduser_idisrefused
  • 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 に答える