rails 4复杂模型验证

时间:2015-12-21 15:36:29

标签: ruby-on-rails validation getter-setter

我有一个rails应用程序。 Assigner(current_user)必须将任务分配给执行者(其他用户)。我正在使用getter setter方法进行jquery自动完成并使用验证,因此我可以确定是否存在分配任务的现有用户。我正在使用救援设置为nil,因此如果字段为空或用户不存在,则可以通过存在来验证。我想改变这一点,因此用户可以将该字段留空或从现有用户中选择。当我验证执行器对象时,我不确定如何做到这一点。

task.rb

class Task < ActiveRecord::Base
  belongs_to :assigner, class_name: "User"
  belongs_to :executor, class_name: "User"

  validates :assigner, presence: true
  validates :executor, presence: { message: "must be valid"}

  def task_name_company
    [executor.try(:profile).try(:first_name),      executor.try(:profile).try(:last_name), executor.try(:profile).try(:company)].join(' ')
  end

  def task_name_company=(name)
    self.executor = User.joins(:profile).where("CONCAT_WS(' ', first_name, last_name, company) LIKE ?", "%#{name}%").first if name.present?
  rescue ArgumentError
    self.executor = nil
  end

0 个答案:

没有答案