2010-10-29 110 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 

使用之前的答案哈希版本我通常如何做到这一点,如果我不想把的建议任何实际分配的逻辑。