在尝试创建一个像这样覆盖初始化的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 = "info@info.com"
我想在一行代码中创建和初始化我的对象。
这可能吗?
答案 0 :(得分:3)
e = Email.new(:email => "info@info.com")
答案 1 :(得分:1)
ActiveRecord :: Base#new也采用了方便的块变化
email = Email.new do |e|
e.email = params[:email] unless params[:email].blank?
end
在先前的答案中使用散列版本的建议是,如果我不想在实际分配上放置任何逻辑,我通常会这样做。