2016-11-29 2 views
1

Я создал схему базы данных, как на картинке ниже enter image description hereRails добавляющие значения ссылочной таблицы не сохраняются

prblem, я не мог в состоянии добавить данные в моей таблице job_services от контроллера заданий.

Я стараюсь использовать следующий код, но не смог сохранить записи в любой таблице.

Кода

def create_job 
@job = Job.new(
    job_code: user_params['job_code'], 
    expect_comp_date: user_params['expected_completion_date'], 
    actual_comp_date: user_params['actual_completion_date'], 
    job_note: user_params['job_note'] 
) 

@job.customer = Customer.find(user_params['customer_id']) 

@service = Service.find(user_params['service_id']) 
@jobservice = JobService.new(service_note: "Test Note", status: 'Test Status') 
@job.jobservices.service = @service 


if @job.valid? 
    if @job.save 
    render :json => {"status" => 'S1000', "description" => 'Job Created'} 
    end 
else 
    render :json => {"status" => 'E1000', "description" => @job.errors.messages} 
end 
end 

Мои Классы модель

//Job Model 
class Job < ApplicationRecord 
    has_many :jobservices 
    belongs_to :customer 
end 

//Job Service Model 
class JobService < ApplicationRecord 
    belongs_to :job 
end 

//Service Model 
class Service < ApplicationRecord 
end 
+1

пожалуйста, вы можете добавить свои данные модели? – Zero

+0

Я обновил этот вопрос, пожалуйста, убедитесь, что – nifCody

ответ

1

1) Ассоциации вы приняли и соглашение об именовании рельсов неправы в своем вопросе.

2) У вас есть синтаксическая ошибка и изменения кода в контроллере, и вы пытались создать службу задания до создания задания.

Вы можете назначить службу рабочих мест только сохраненному заданию.

Вот правильный способ сделать их,

Модели:

//Job Model 

class Job < ApplicationRecord 
    has_many :jobservices 
    belongs_to :customer 
end 

//Job Service Model 

class Jobservice < ApplicationRecord 
    belongs_to :job 
    belongs_to :service 
end 

//Service Model 

class Service < ApplicationRecord 
    has_many :jobservices 
end 

Контроллер:

def create_job 
    @job = Job.new(
     job_code: user_params['job_code'], 
     expect_comp_date: user_params['expected_completion_date'], 
     actual_comp_date: user_params['actual_completion_date'], 
     job_note: user_params['job_note'] 
    ) 

    @job.customer = Customer.find(user_params['customer_id']) 

    @service = Service.find(user_params['service_id']) 

    if @job.valid? 

     if @job.save 

     @service = Service.find('3') 

     @jobservice = Jobservice.new(service: @service, service_note: "Test Note", status: 'Test Status') 

     @job.jobservices << @jobservice 


     render :json => {"status" => 'S1000', "description" => 'Job Created'} 
     end 
    else 
     render :json => {"status" => 'E1000', "description" => @job.errors.messages} 
    end 
end 
+0

Он производит ту же ошибку я получил – nifCody

+0

NameError (неинициализированные постоянные работ :: Jobservice): приложения/контроллеры/jobs_controller.rb: 31: в 'create_job» – nifCody

+0

31-й линия : '@job.jobservices.service = @service '' – nifCody

Смежные вопросы