編集:ファイルフィールドを追加し、ジョブ登録コントローラーでのジョブ登録の作成を変更しましたEDIT2:次のコードが機能するはずです
求人応募を行うアプリがあります。ユーザー モデル (ID、名前、電子メール) とジョブ モデル (ID、役職) があります。ユーザーが求人に応募できるようにしたい。そこで、「User」の「id」を参照する「user_id」と「Job」の「id」を参照する「job_id」を使用して、Jobenrollment (id、user_id、job_id) という 3 番目のモデルを作成しました。
私はログインシステムを持っています (Rails チュートリアルに従って手作業で作成しました)。したがって、現在ログインしているユーザー用に current_user という変数があります。これまでの私の UI は次のとおりです。このフォームを介して適用ボタン (私がレンダリングするジョブ ビュー フォルダーの部分に存在します):
<%= form_for(current_user.jobenrollments.build(job_id: @job.id), :html => { :multipart => true }) do |f| %>
<%= f.hidden_field :job_id %>
<%= f.file_field :resume %>
<%= f.submit "Apply", :class => "btn btn-large btn-success" %>
<% end %>
ユーザーモデルは次のとおりです (user.rb) :
class User < ActiveRecord::Base
has_many :jobenrollments, dependent: :destroy
has_many :jobs, :through => :jobenrollments
def unapply!(job)
jobenrollments.find_by_job_id(job.id).destroy
end
ジョブ.rb
has_many :jobenrollments, dependent: :destroy
has_many :users, :through => :jobenrollments
jobenrollments_controller.rb
def create
@job = Job.find(params[:jobenrollment][:job_id])
current_user.jobenrollments.create!(params[:jobenrollment])
redirect_to @job
end
def destroy
@job = Jobenrollment.find(params[:id]).job
current_user.unapply!(@job)
redirect_to root_path
end
これまでのところすべて機能しています。今、私はそれを拡張し、Paperclip を使用して登録時にファイルのアップロードを追加したいと考えています。私が持っているフォームにファイルフィールドを組み込む方法に問題があります..
私は走った:
rails generate paperclip jobenrollment resume
Jobenrollments に Paperclip を追加すると、私の jobenrollment モデルは次のようになります。
class Jobenrollment < ActiveRecord::Base
belongs_to :user
belongs_to :job
validates_uniqueness_of :user_id, :scope => :job_id
#resume attachment using Paperclip, cf doc in Github readme
has_attached_file :resume, url: "/resumes/:id/:basename.:extension",
path: ":rails_root/public/resumes/:id/:basename.:extension"
#validates_attachment_presence :resume
終わり
== Schema Information
# Table name: jobenrollments
id :integer not null, primary key
user_id :integer
job_id :integer
created_at :datetime not null
updated_at :datetime not null
resume_file_name :string(255)
resume_content_type :string(255)
resume_file_size :integer
resume_updated_at :datetime
ペーパークリップに慣れている人がこのファンキーなことを理解するのを手伝ってくれたら、それは素晴らしいことです. ありがとう:)
また、さらに情報が必要な場合はお知らせください