0

使用できるようにしたいと思いますCompany.find_or_create_by_nip(params[:job][:company_attributes])

ネストされた会社のフォームで作成する場合は、最初にその存在する端があるJobかどうかを確認してから、新しい会社に割り当てます。CompanynipJob

コントローラ

# JobsController
def new
  @job = Job.new
  @job.company = Company.new
end

def create
  @job = Job.new(params[:job])

  if @job.save
    redirect_to jobs_path,
      notice: t('activerecord.successful.messages.created')
  else
    render 'new'
  end
end

モデル

# Job
attr_accessible :company_attributes
belongs_to :company
accepts_nested_attributes_for :company

# Company
has_many :jobs
validates :nip,
  nip: true,
  presence: true,
  uniqueness: true

意見

# jobs#new
= simple_form_for @job, html: { multipart: true, class: 'form-horizontal' } do |f|
  = f.simple_fields_for :company do |c|
    = c.input :nip
    = c.input :address_street
  = f.submit
4

1 に答える 1

1

たぶん、if条件を試してみるべきです:

nip = params[:job][:company_attributes][:nip]
if Company.exists?(name: nip)
  @job.company = Company.where(name: nip).first
else
  @job.company = Company.create(name: nip)
end
于 2012-12-29T07:09:14.530 に答える