Rails – 根据另一个模型validation属性

我有一个Assignment类,它同时属于User类和Role类。 它存储三个值 – 对其所属的用户的引用,对其所属的角色的引用,以及指示创建Assignment实例的用户的名称的字符串值。

class Assignment < ActiveRecord::Base include ActiveModel::Validations belongs_to :user belongs_to :role attr_accessible :user, :role, :assigned_by_user ... 

在我的模型validation中,我想执行检查以确保assigned_by_user属性与有效用户的名称匹配。 但是,我似乎无法访问Assignment模型中的User.find(…)方法。

我如何实现此function?

将“检查用户”模块添加到lib文件夹(check_user.rb)。 然后在那个文件中

  module CheckUser def search_user user = User.find_by_name(self.assigned_by_user) unless item.nil? errors.add(:name_found, "This username has already been taken") end end 

然后在你的Assignment模型中

  class Assignment < ActiveRecord::Base include CheckUser validate :search_user