2012-01-13 74 views
0

這發生在Approval模型中。審批有一個屬性:電子郵件。所以說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)。這些屬性需要從另一個模型電子郵件中提取,對於這些電子郵件,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

告訴我的行用戶創建時的日誌/ 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使用正確的電子郵件保存用戶,而不是將第一個/最後一個屬性設置爲它。 – 2012-01-13 17:18:36

+0

你是對的,我更新了我的安澤,對不起 – 2012-01-13 18:21:54

相關問題