2012-01-13 7 views
0

これは承認モデルで発生しています。承認には:emailという属性があります。つまり、self.emailはemail属性を持つApprovalクラスのObjectを呼び出しています。 enter code hererails 3 find_or_create_byメソッドの使い方、新しいオブジェクトに追加の属性を設定する方法

def associate_correct_user 
    new_user = User.find_or_create_by_email self.email do |u| 
     u.invite! 
end 

私はここにユーザーを作成していた場合、私は他の二つの属性(FIRST_NAMEとLAST_NAME)を渡す必要があります。これらの属性は、別のモデルのEmailから取得する必要があります。この場合、self.emailはすでに検証済みです。

これが私の頭の中で理にかなっているものです:

def associate_correct_user 
    new_user = User.find_or_create_by_email self.email do |u| 
     user = Email.find_by_email(self.email) 
     u.first_name = user.first_name 
     u.last_name = user.last_name 
     u.invite! 
end 

これは、ユーザーを作成しますが、FIRST_NAMEとLAST_NAMEは、この新しいユーザーに属性が設定されていません...

答えて

0

は私のラインを表示しますあなたのlog/development.logを作成します。 first_nameとlast_nameが保護属性です。 ここにfind_or_create_byの例があります。http://api.rubyonrails.org/classes/ActiveRecord/Base.html#label-Dynamic+attribute-based+finders 異なる構文を使用しています。

User.find_or_create_by_name('Bob', :age => 40) { |u| u.admin = true } 
+0

ええと、find_or_Create_byのポイントではありませんか? IT部門は正しい電子メールでユーザーを保存します。最初の属性や最後の属性は設定しないでください。 –

+0

あなたは正しいです、私はアンサーを更新しました、ごめんなさい –

関連する問題