3

UserクラスとRoleクラスの両方に属するAssignmentクラスがあります。これには、所属するユーザーへの参照、所属するロールへの参照、および割り当てインスタンスを作成するユーザーの名前を示す文字列値の3つの値が格納されます。

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(...)メソッドにアクセスできないようです。

この機能をどのように実現しますか?

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 に答える