Skip to content

Instantly share code, notes, and snippets.

@jzellman
Created March 30, 2012 19:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jzellman/2254101 to your computer and use it in GitHub Desktop.
Save jzellman/2254101 to your computer and use it in GitHub Desktop.
class Subscription::Plan
has_many :scan_frequencies
def scan_frequencies_sorted
scan_frequencies.sort do |a, b|
a.frequency.times_per_year <=> b.frequency.times_per_year
end
end
end
class Subscription::ScanFrequency
belongs_to :frequency
end
class Frequency
validates_inclusion_of :times_per_year, :in => [1, 4, 12, 52, 365]
has_many :scan_frequencies
end
# Example usages
scan_freq = plan.scan_frequencies_sorted.first
scan_freq.frequency.times_per_year
scan_freq.frequency.name
# would become
class Subscription::Plan
has_many :scan_frequencies, :order => 'times_per_year'
end
class Subscription::ScanFrequency
FREQUENCY_TO_NAME = {1 => 'Annually',
4 => 'Quarterly',
12 => 'Monthly',
52 => 'Weekly',
365 => 'Daily'
}
validates_inclusion_of :times_per_year, :in => FREQUENCY_TO_NAME.keys
def frequency_name
FREQUENCY_TO_NAME[self.times_per_year]
end
end
# Example usages
# no need to sort, already done
scan_freq = plan.scan_frequencies.first
scan_freq.times_per_year
scan_freq.frequency_name
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment