我有一个Assignment类,它同时属于User类和Role类。它存储三个值 - 对它所属的User的引用,对它所属的Role的引用,以及一个字符串值,指示创建Assignment实例的User的名称。
class Assignment < ActiveRecord::Base
include ActiveModel::Validations
belongs_to :user
belongs_to :role
attr_accessible :user, :role, :assigned_by_user
...
在我的模型验证中,我想执行检查以确保assigned_by_user属性与有效用户的名称匹配。但是,我似乎无法访问Assignment模型中的User.find(...)方法。
我如何实现此功能?
答案 0 :(得分: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