`
CaiDeHen
  • 浏览: 94250 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

#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

<!-- letters/index.html.erb -->
<% title "Select a Letter" %>

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

<!-- letters/show.html.erb -->
<% title "Products for Letter #{@letter.char}" %>

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

<%= render :partial => @letter.products %>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics