2010-10-29 222 views
3

我很快就遇到了問題試圖創建推翻初始化這樣一個ActiveRecord實例時:初始化一個ActiveRecord對象而不覆蓋初始化

class Email < ActiveRecord::Base 
    belongs_to :lead 
    def initialize(email = nil) 
    self.email = email unless email.nil? 
    end 
end 

我發現this帖子裏面清理爲什麼它正在發生。

反正是有,我可以創造避免這樣的代碼:

e = Email.new 
e.email = "[email protected]" 

我想在一行代碼來創建和初始化我的對象最好。

這可能嗎?

+1

...你不喜歡:'e = Email.new(:email =>'[email protected]')'? 'ActiveRecord :: Base#new'已經非常靈活,允許這個或者一個塊初始化形式。 – 2010-10-29 20:48:37

回答

1

的ActiveRecord :: Base的新#也需要一個方便的塊變化

email = Email.new do |e| 
    e.email = params[:email] unless params[:email].blank? 
end 

使用之前的答案哈希版本我通常如何做到這一點,如果我不想把的建議任何實際分配的邏輯。