Working with active records in rails is nice because a lot of your domain is directly represented in your model classes.
Sometimes however, you still need to create some domain classes that aren’t tied to a database model, and reference them in your app.
I’m not sure what the best way (or convention) is for doing this, but what’s been working for me is to create a separate directory called domain

and place my domain object(s) in there:
class TimeRange
def self.today
(Time.now.midnight)..Time.now.end_of_day
end
def self.yesterday
(Time.now.midnight - 1.day)..Time.now.end_of_day
end
def self.last_week
(Time.now.prev_week)..Time.now.end_of_day
end
def self.ages_ago
(Time.now.prev_year)..Time.now.end_of_day
end
end
And then referencing them where I need them using the ‘require_relative’ command.
require_relative '../domain/time_range' require_relative '../domain/constants' class CitiesController < ApplicationController
Filed under: rails Tagged: domain, rails, RoR, ruby on rails, rubyonrails