I’m building somewhat of a billing system which needs to set next
renewal dates for each account package. In my account_package model I
have this:
class AccountPackage < ActiveRecord::Base
belongs_to :account
belongs_to :package
belongs_to :package_cycle
before_save :set_renewal_date
def set_renewal_date
next_renewal_date =
Time.now.advance(self.package_cycle.cycle.frequency)
self.next_renewal = next_renewal_date
end
end
Basically, my Cycle model has a frequency column where I’ve stored the
strings :months => 1, :years => 1, :years => 2, etc., hoping I could
just use the value in the database within the Time.now.advance()
method. It doesn’t work. Each time the record saves, I just get the
value of Time.now in there.
Basically, my Cycle model has a frequency column where I’ve stored the
strings :months => 1, :years => 1, :years => 2, etc., hoping I could
just use the value in the database within the Time.now.advance()
method. It doesn’t work. Each time the record saves, I just get the
value of Time.now in there.
You can’t pass a string, you need to pass a hash. One way of doing
that would be to use the activerecord’s serialize method so that the
Cycle model would actually store the hash
I added a frequency_unit column to my Cycles model. Now I store the
string “years” or “months” or whatever in frequency_unit and store 1,
2, 3, etc. in frequency. I can then use this code, which works the
way I want it to:
So I have a text field on a page that I enter in something for that
frequency. I now have the model set to serialize :frequency. What do
I need to type into the text field so that this will work? Sorry to
be a bother, just at a loss and can’t figure it out…