dagda1
dagda1

Reputation: 28770

Initializing an ActiveRecord object without overriding initialize

I quickly ran into problems when trying to create an ActiveRecord instance that overrode initialize like this:

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

I found this post which cleared up why it is happening.

Is there anyway that I can avoid creation code like this:

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

I would like to create and initialise my objects in one line of code preferably.

Is this possible?

Upvotes: 3

Views: 1451

Answers (2)

jwarchol
jwarchol

Reputation: 1916

ActiveRecord::Base#new also takes a handy block variation

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

The suggestions of using the hash version in prior answers is how i typically do it if I don't want to put any logic on the actual assignment.

Upvotes: 1

Trip
Trip

Reputation: 27114

e = Email.new(:email => "[email protected]")

Upvotes: 3

Related Questions