Using before_create and conflicting setter method


#1

Hi,

I am having trouble using before_create when I have an specialized
setter method:

before_save :set_campaign_start

#-----------------------------------------------------------------------

def set_campaign_start
self.campaign_start = Time.now
end

We want the date to always start at midnight

#-----------------------------------------------------------------------

def campaign_start=(new_time)
@campaign_start = new_time.utc.at_beginning_of_day
end

It sets @campaign_start in the object, but not the actual attribute,
and therefore not in the DB. If I remove the setter method, the
before_create works great. What is the correct way to do this?

Thanks,
Brett


#2

Hello Brett,

end
and therefore not in the DB. If I remove the setter method, the
before_create works great. What is the correct way to do this?

def campaign_start=(new_time)
write_attribute(“campaign_start”, new_time.utc.at_beginning_of_day)
end

But I’m not sure I’ve understood your pb correctly.

-- Jean-François.

#3

Jean-François,

 self.campaign_start = Time.now

It sets @campaign_start in the object, but not the actual attribute,
and therefore not in the DB. If I remove the setter method, the
before_create works great. What is the correct way to do this?

def campaign_start=(new_time)
write_attribute(“campaign_start”, new_time.utc.at_beginning_of_day)
end

But I’m not sure I’ve understood your pb correctly.

That did the trick. Most examples I had seen showed using the
instance variable when overriding the assignment method. But I guess
since I’m trying to do an assignment in the before_create, some
connection was not made yet. The “campaign_start” attribute was not
getting set, just the instance variable.

Anyway, worked like a charm. Thanks!

Brett_______________________________________________
Rails mailing list
removed_email_address@domain.invalid
http://lists.rubyonrails.org/mailman/listinfo/rails