3

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

class Assignment < ActiveRecord::Base
  include ActiveModel::Validations

  belongs_to :user
  belongs_to :role  

  attr_accessible :user, :role, :assigned_by_user

  ...

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

我将如何实现此功能?

4

1 回答 1

7

将“检查用户”模块添加到您的 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

然后在您的分配模型中

 class Assignment < ActiveRecord::Base
  include CheckUser
  validate :search_user
于 2012-08-07T15:43:08.620 回答