我有这四种模式:
sprintf("%<foo>s", { :foo => 456 })
=> "456"
sprintf("%{foo} : %{foo}s", { :bar => 123, :foo => 456 })
=> "456 : 456s"
创建新工作订单时,我想验证员工是否属于所选工作组。
如何在工作订单模型中对该验证进行编码?
感谢您的帮助!
答案 0 :(得分:0)
我会在workorder模型中编写一个自定义验证方法。所以它可能看起来像这样。
class Workorder < ActiveRecord::Base
belongs_to :employee
belongs_to :workgroup
validate :check_employee_workgroup
private
def check_employee_workgroup
errors.add(:employee_id, "Employee is not available in this work group") unless
self.employee.workgroups.select(:id).where(id: [self.workgroup_id]).exists?
end
end
答案 1 :(得分:0)
这样做的必要性可能是一个设计问题。也许你应该修改你的类看起来像这样:
class Workgroup < ActiveRecord::Base
has_many :empgroups
has_many :employees, through: :empgroups
class Empgroup < ActiveRecord::Base
attr_accessible :employee_id, :workgroup_id
belongs_to :employee
belongs_to :workgroup
class Employee < ActiveRecord::Base
has_many :empgroups
has_many :workgroups, through: :empgroups
class Workorder < ActiveRecord::Base
belongs_to :empgroup
这样,您根本不需要自定义验证器。从那里,您可以添加任何其他:必要的关系