我有一个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