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 %>
分享到:
相关推荐
Rails内置了大量的工具和库,例如Active Record ORM用于数据库操作,Action Mailer用于发送邮件等,极大地提高了开发效率。 ##### 3.4 测试友好 Rails提供了一整套完善的测试框架,包括单元测试、集成测试等,支持...
Security and privacy being a very active and hot topic of research and discussion these days, we have five chapters dedicated to the relevant issues associated with cloud computing security....
sdk LCS/Telegraphics Wintab* Interface Specification 1.1: 16- and 32-bit API Reference By Rick Poyner Revised February 11, 2012 This specification was developed in response to a perceived need for a...
=======================================================DATASNAP* After deleting a row from a TClientDataset, sometimes the delta dataset still contains a record. This happens if you populate the ...
Consistency and isolation are the most important in describing SQL Server’s locking model. It is up to the application to define what consistency means, and isolation in some form is needed to ...
further than the JavaMail API, which offers a protocol-independent model for working with IMAP, POP, SMTP, MIME, and all those other Internet-related messaging protocols. With the help of the ...