我感觉有点愚蠢的问这个,但我一直在谷歌搜索我* *关闭。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
的问题是,当我离开公司,领域的空白,公司被不创建,但就业Model获取存在于数据库中。
我相信它与Company.new() - 有关,我必须检查,如果@ company-Model是在@ employment-Model创建之前先创建的。
我该如何实现验证首先得到测试?
非常感谢!
除了vinodadhikary的回答,您还可以尝试保存公司。所以不用'@ employment.save',而是使用'@ company.save'。当'@ company'通过验证时,这应该也会节省@ @ employment。 – jvnill
它的工作原理!非常感谢你! – pmuens