Search code examples
ruby-on-rails-3activerecordmodels

How can I write this record search in rails 3


 #find the most recent news item for a specific locale
  def self.find_most_recent_news_for_locale

    first(:include => :news_item_detail,:conditions => ["news_items.created_at= ? AND  news_item_details.locale = ?",  maximum(:created_at), I18n.locale])
  end

The Models

class NewsItem < ActiveRecord::Base

has_one :news_item_detail

end

class NewsItemDetail < ActiveRecord::Base

belongs_to :news_item

end

Solution

  • In Rails 3, you should use the where method for creating conditions:

    def self.find_most_recent_news_for_locale
      where("news_items.created_at = ? AND news_item_details.locale = ?",
        maximum(:created_at), 
        I18n.locale).includes(:news_item_details).first
    end
    

    You might want to watch episode #202 of Railscasts as a quick tutorial.