#121 Non Active Record Model

This episode will show you how to make a model which isn't based on Active Record. You may want to do this if a resource isn't backed by the database.

# models/letter.rb
class Letter
attr_reader :char

def self.all
('A'..'Z').map { |c| new(c) }
end

def self.find(param)
all.detect { |l| l.to_param == param } || raise(ActiveRecord::RecordNotFound)
end

def initialize(char)
@char = char
end

def to_param
@char.downcase
end

def products
Product.find(:all, :conditions => ["name LIKE ?", @char + '%'], :order => "name")
end
end

# letters_controller.rb
def index
@letters = Letter.all
end

def show
@letter = Letter.find(params[:id])
end


<% title "Select a Letter" %>

<% for letter in @letters %>
<%= link_to letter.char, letter %>
<% end %>


<% title "Products for Letter #{@letter.char}" %>

<%= link_to "Select a Letter", letters_path %>



<%= render :partial => @letter.products %>

你可能感兴趣的:(Railscasts)