在连接表上使用回形针:作业应用程序

时间:2012-07-01 23:12:15

标签: ruby-on-rails paperclip

编辑:我添加了文件字段,并更改了jobenrollment控制器中jobenrollment的创建 EDIT2:以下代码应该可以工作

我有一个可以完成工作申请的应用程序。我有一个用户模型(id,名称,电子邮件)和一个工作模型(id,title)。我希望我的用户能够申请工作。所以我创建了第三个名为Jobenrollment的模型(id,user_id,job_id),其中“user_id”引用“User”中的“id”,“job_id”引用“Job”中的“id”

我有一个登录系统(按照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

job.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

将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 

如果有人对Paperclip感到满意可以帮助我把这个时髦的东西弄清楚,那就太棒了。 Thaaanks:)

如果您需要更多信息,请告知我们

1 个答案:

答案 0 :(得分:2)

file_field方法用于向表单添加文件上载输入。请务必将表单设为多部分。