我有一个简单的应用程序有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
答案 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