- ruby 1.9.2p290
- rails 3.1.1
I have these models:
class Recipe < ActiveRecord::Base
belongs_to :festivity
end
class Festivity < ActiveRecord::Base
has_many :recipes
end
I have the following field in the “recipes” table:
festivity_id
And the following datetime fields in the “festivities” table:
starts_at
ends_at
How to display the content based on festivities dates?
I started think in this static way:
class PagesController < ApplicationController
def home
@recipes_by_festivities = Recipe.where(:festivity_id => 4).all(:order => 'RAND()', :limit => 8)
end
end
For example: In Xmas period (about all december month), I want to show a recipe list with the festivity_id = 1. In Thanksgiving period I wanna just a list of recipes with festivity_id = 4.
Am I clear? Let me know if I not.
SOLUTION
@current_festivity = Festivity.find(:last, :conditions => ["? between starts_at AND ends_at", Time.utc(0,Time.now.month,Time.now.day,0,0,0)])
@recipes_by_festivities = Recipe.where(:festivity_id => @current_festivity).all(:order => 'RAND()', :limit => 8)
This assumes
starts_atandends_atare saved with the same year (0), except if the period is in the middle of two years (Christmas time, for example): in that case, theends_atyear must be 1.And this is a possible implementation of a function: