Rails,验证来自其他模型的对象的存在

时间:2016-04-06 23:48:50

标签: ruby-on-rails validation model

我有一个简单的应用程序有3个模型 - 餐厅,员工和用户。 我的餐厅模型有很多员工,我可以通过创建它们并为员工的user_id属性赋值来雇用其他员工。如何在保存新员工之前检查id = user_id的用户是否存在?谢谢!

编辑=======解决方案

validate :user_exists

  def user_exists
   if User.exists?(self.user_id)
    return true
   else
    self.errors.add(:user_id, "Unable to find this user.")
    return false
   end
  end

3 个答案:

答案 0 :(得分:2)

实际上这是一种更简单的方法,因为您可以直接验证belongs_to关联:

在员工

validates :user, presence: true, message: "could not be found"

答案 1 :(得分:1)

class Employee < ActiveRecord::Base

  validate :user_exists, message: "#{user_id} must be a valid user"

  def user_exists
   return false if User.find(self.user_id).nil?
  end
end

答案 2 :(得分:0)

它适用于此代码(未找到id时未创建员工)但错误消息未显示...

     validate :user_exists

      def user_exists
       if User.exists?(self.user_id)
        return true
       else
        self.errors.add(:error, "Unable to find this user.")
        return false
       end
      end