`
CaiDeHen
  • 浏览: 96726 次
  • 性别: 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 %>
分享到:
评论

相关推荐

    Agile Web Development with Rails

    Rails内置了大量的工具和库,例如Active Record ORM用于数据库操作,Action Mailer用于发送邮件等,极大地提高了开发效率。 ##### 3.4 测试友好 Rails提供了一整套完善的测试框架,包括单元测试、集成测试等,支持...

    Research Advances in Cloud Computing-Springer(2017).pdf

    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...

    Delphi7.1 Update

    =======================================================DATASNAP* After deleting a row from a TClientDataset, sometimes the delta dataset still contains a record. This happens if you populate the ...

    微软内部资料-SQL性能优化3

    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 ...

    Java邮件开发Fundamentals of the JavaMail API

    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 ...

Global site tag (gtag.js) - Google Analytics