Я чувствую себя немного глупым, чтобы спросить об этом, но я был Googling мой * # выключен.Rails has_many через проверку получил пропущен
Ну у меня есть следующие модели:
class Company < ActiveRecord::Base
has_many :employments
has_many :users, through: :employments
validates_presence_of :name
validates_presence_of :description
validates_numericality_of :zip, only_integer: true
validates_presence_of :email
validates_presence_of :street
validates_presence_of :city
validates_presence_of :country
validates_presence_of :telephone
end
class Employment < ActiveRecord::Base
belongs_to :user
belongs_to :company
end
class User < ActiveRecord::Base
has_many :employments
has_many :companies, through: :employments
end
Важных здесь является компания-модель, которая имеет некоторые валидации.
Теперь у меня есть следующий контроллер, чтобы создать новую компанию:
class CompaniesController < ApplicationController
def create
@company = Company.new(company_params) # The params were set with a private Method
@employment = @company.employments.build(user: current_user, is_admin: true)
if @employment.save
redirect_to :back, flash: { success: 'Success' }
else
@title = 'Create a new company'
render :new
end
end
end
Проблема заключается в том, что, когда я оставляю компании-поля пустым, компания получает не создана, но занятость Модель получает persistet в базе данных.
Я верю, что это как-то связано с Company.new() - Звонок, который я должен проверить, если первая компания @ Model создана, прежде чем будет создана модель занятости @.
Как я могу добиться того, что проверка сначала проверяется?
спасибо!
В дополнение к ответу vinodadhikary вы также можете попробовать сохранить компанию. поэтому вместо '@ employment.save' используйте' @ company.save'. Это также должно сохранять '@ занятость', когда' @ company' проходит проверки. – jvnill
Он работает! Большое спасибо! – pmuens