Forum: Ruby on Rails how to add plugin to ActiveRecord

Announcement (2017-05-07): is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see and for other Rails- und Ruby-related community platforms.
Mike H. (Guest)
on 2006-06-08 20:17
I'm trying to set a date field's day to the last day of the month before
I save it.  I can do this successfully now using this code:

class Account < ActiveRecord::Base
  def before_save
    self.exp_date = last_day_of_month(self.exp_date)

  # Returns a Date object set to the last day of the current month
  def last_day_of_month(date =
      next_month_str = date.year.to_s + '-' + (date.month + 1).to_s +
      Date.parse(next_month_str) - 1

However, this is Ruby on Rails, and I'm trying to break all my old
programming habits like making ugly code, and this looks ugly.  Is there
a way to make this into some kind of plugin so that all I have to do is

class Account < ActiveRecord::Base
  acts_as_expiration_date :exp_date

and it will automatically do what I want behind the scenes?

Alex W. (Guest)
on 2006-06-08 20:33
Mike Haggerty wrote:
> class Account < ActiveRecord::Base
>   acts_as_expiration_date :exp_date
> end

Try looking at other acts_as_* plugins and see how they work.
Chris H. (Guest)
on 2006-06-08 22:36
(Received via mailing list)
if you are onyl using this for account models, a plugin is going to be
overkill...why not just do:

class Account < ActiveRecord::Base
  before_create :set_expiry_date

  # other methods

  # set the expiry date
  def set_expiry_date
    self.exp_date =


=> "2006-06-30"

note: if you use before_save, every time you save the record, whether
it's a
new record or an update, the expiry date will be updated to reflect the
day of the current my example, I used before_create to
indicate i
only want the expiry date set when a new record is created.

This topic is locked and can not be replied to.