问这个问题我感觉有点傻,但我一直在谷歌搜索我的 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
这里重要的是具有一些验证的公司模型。
现在,我有以下控制器来创建一个新公司:
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
问题是,当我将公司字段留空时,公司不会被创建,但就业模型会在数据库中持久化。
我相信它与 Company.new()-Call 有关,我必须检查 @company-Model 是否先创建,然后再创建 @employment-Model 。
我怎样才能实现验证首先得到测试?
非常感谢你!