在 rails 中查找相应的 has_one 行

Finding corresponding has_one row in rails

如果工作 has_one 与之关联的简历:

class Job < ActiveRecord::Base
    has_one :cv
end

我设置的路线如下:

  resources :jobs do
    resource :cv
  end

当我想为一份工作创建简历时,我遵循以下 link:

  <%= link_to "Add CV", new_job_cvs_path(j) %>

与CV控制器中的以下方法相关联:

  def new
    @job = Job.find(params[:job_id])
    @job_cv = @job.cv.new
  end

然而,这导致我收到以下错误,@job_cv 行:

SQLite3::SQLException: no such column: cvs.job_id: SELECT "cvs".* FROM "cvs" WHERE "cvs"."job_id" = ? LIMIT 1

我想我在某处设置了错误,我只是不知道在哪里...

您忘记为新关系创建迁移,请通过

创建新迁移
rails g migration AddCvToJobs

然后在app/db/migrate/xxx_add_cv_to_jobs.rb中编辑新创建的迁移文件:

class AddCvToJobs < ActiveRecord::Migration
  def change
    add_column :cvs, :job_id, :integer, index: true
  end
end

然后 运行 rake db:migrate 再试一次。