私はこれを尋ねるのは少しばかげていると感じていますが、私は自分の a*# をグーグルで検索しています。
さて、私は次のモデルを持っています:
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
ここで重要なのは、いくつかの検証がある company-Model です。
これで、新しい会社を作成するための次のコントローラーができました。
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
問題は、会社のフィールドを空白のままにすると、会社が作成されず、雇用モデルがデータベースに永続化されることです。
@employment-Model が作成される前に、@company-Model が最初に作成されるかどうかを確認する必要がある Company.new()-Call と関係があると思います。
検証が最初にテストされるようにするにはどうすればよいですか?
どうもありがとうございました!