代码之家  ›  专栏  ›  技术社区  ›  Bryce

Rails-基于另一个模型验证属性

  •  4
  • Bryce  · 技术社区  · 13 年前

    我有一个Assignment类,它同时属于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属性与有效用户的名称匹配。但是,我似乎无法访问Assignment模型中的User.fund(…)方法。

    我将如何实现此功能?

    1 回复  |  直到 13 年前
        1
  •  7
  •   Kyle C    13 年前

    在lib文件夹(Check_User.rb)中添加一个“CheckUser”模块

     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