`
52jobs
  • 浏览: 11503 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

rails 小技巧

阅读更多
#Rails Tip 1 Actions Are Methods http://errtheblog.com/posts/1-actions-are-methods
class PostsController < ApplicationController
  def list_by_author
    list :conditions => ['author_id = ?', params[:id]] 
  end

  def list(find_options = {})
    @posts =  Post.find(:all, { :order => 'created_on desc' }.merge(find_options))
    render :action => :list
  end
end

技术要点:
对浏览器传过来的Hash表 params 进行加工处理,使用Hash.merge技术调用Post.find方法,使得list_by_month, list_by_year变得多余。

#Rails Tip 2 Real Console Helpers 在console中使用 ApplicationHelperhttp://errtheblog.com/posts/41-real-console-helpers
#假设我们有这样一个applicationHelper
module ApplicationHelper
  def application_helper_method
    true
  end
end
#如果直接在 在 rails console中,是不起作用的。
>> helper.application_helper_method =>NoMethodError: undefined method `application_helper_method'       
#正确的方法是
helper.extend ApplicationHelper  => #<Object:0x2572f68>
helper.application_helper_method => true

#Rail Tip 3 分类组织好Model Organize Your Models 
http://errtheblog.com/posts/3-organize-your-models
Rails::Initializer.run do |config|
  config.frameworks -= [ :action_web_service ]
  config.load_paths += %W[
    #{RAILS_ROOT}/app/models/api
    #{RAILS_ROOT}/app/models/cache
    #{RAILS_ROOT}/app/models/database
    #{RAILS_ROOT}/app/models/tableless
  ]
end
技术要点:通过这种方法,我们将model 分成了几个部分 models/api  models/tableless ... 当然,以上代码,直接用 config.load_paths += Dir[”#{RAILS_ROOT}/app/models//“] 更简洁。


#Rail Tip 4 Accessor Missing” http://errtheblog.com/posts/18-accessor-missing
这是一篇非常重要文章,解释了模型中的belongs_to :author 以及 attribute accessor(例如story模型是的title)是如何工作。
结论:
1、belongs_to is a class method of ActiveRecord::Base。When belongs_to is called,It’s a real method defined on my Story class. 
belong_to 是ActiveRecord::Base中的类方法,当Story类被加载,程序运行到 belongs_to :author的时候,author(),author=(),被定义在 Strory类。 

2、假设Author表中有一个title列。那个 title(),title=()这两个Get/set方法是如何出现的呢。它们是method_missing。并不真实存在于Article类中。
3、通过alise(别名),可以提供belong to 产生的方法再封装
  class Story < ActiveRecord::Base
    belongs_to :author

    alias :real_author :author
    def author
      auth = real_author
      auth.name
    end
  end
  
  
分享到:
评论

相关推荐

    Rails入门教程一(翻译)

    ### Rails 入门教程知识点详解 #### 一、Rails与Ruby简介 - **Rails**:全称为Ruby on Rails,简称RoR或...通过以上知识点的学习和实践,新手可以逐步掌握Rails的开发技巧,为后续更复杂项目的开发打下坚实的基础。

    Ruby on Rails 指南 v5.0.1 中文版

    - **小技巧和注意事项**:分享在处理关联时的一些实用技巧和需要注意的地方。 - **关联详解**:深入探讨每种关联类型的实现细节。 - **单表继承**:介绍如何使用单表继承来实现多态关联。 #### ActiveRecord查询...

    终于知道怎么把rails Web程序打包成可执行文件了

    通常,博客可能会包含一些解决常见问题的技巧,如处理非纯Ruby的依赖,比如数据库驱动,或者是优化打包大小的策略。 `demo_dev.db`文件很可能是你的Rails应用的数据库存储,比如SQLite数据库。在打包应用时,通常...

    Agile Web Development with Rails

    - **经验丰富的开发者**:即使是对Rails有一定了解的开发者,也能从本书中获得关于如何更好地应用敏捷开发原则的新思路和技巧。 - **团队领导者**:书中不仅涉及具体的开发技巧,还包括了如何组织团队、管理项目等...

    rails 3 upgrade handbook(simple樣例)

    - **代码重构技巧**:学习如何重构代码以充分利用Rails 3的新功能,例如ActiveRecord改进等。 - **最佳实践**:遵循最佳实践可以避免常见的陷阱,并使代码更易于维护。 - **调试和故障排除**:掌握有效的调试方法和...

    Rails Recipes (2006) .pdf

    该书旨在为开发者提供一系列关于 Ruby on Rails 的实用技巧和解决方案。通过这些“recipes”,开发者可以更好地理解和应用 Rails 的各种功能,从而提高开发效率和应用程序的质量。 #### 标签解析:“rails学习” ...

    Rails入门

    Rails入门是针对初学者的一份教程,主要涵盖了Ruby on Rails框架的基础知识。Ruby on Rails(简称Rails)是一款...在学习过程中,配合阅读官方文档、参与社区讨论和完成小项目,将有助于更好地理解和掌握Rails的魅力。

    Ruby on Rails开发 从入门到精通实战教程.rar

    数据库操作: 掌握Rails框架中对数据库的操作方法,包括模型定义、数据迁移、数据查询等数据库操作技巧。 阅读建议: 逐步学习: 按照教程的顺序,逐步学习Ruby on Rails开发的各个知识点,保持持续的学习和实践。 ...

    Agile Web Development with Rails中文版 3rd Edition

    #### 十二、任务G:最后一点小改动 这部分介绍了如何进行一些收尾工作。 **12.1 生成XML** 实现了生成XML文件的功能,用于导出或交换数据。 **12.2 扫尾工作** 完成了最后的一些细节调整,使应用更加完善。 ##...

    Agile Web Development with Rails.pdf(英文)

    - **性能优化技巧**:如何提升Rails应用的性能,包括数据库查询优化、缓存机制等。 - **安全性考虑**:如何确保Rails应用的安全性,比如防止SQL注入攻击、XSS攻击等。 ### 结语 《使用Rails进行敏捷Web开发》这...

    rebuilding-rails:完全从SCRATCH构建了一个简单的Rails版本。 我的诺亚·吉布斯(Noah Gibbs)的版本“ Rerail Rails”

    “通过Rebuild Rails,您将构建一个MVC Web框架,其结构类似于Rails,并使用相同的基础库和技巧。您将学习Rails背后的魔力。您将完成每个系统,并通过结构化练习来巩固您的知识。您将了解Rails,就像只有框架构建器...

    rails-yelp-mvp-源码.rar

    【标题】"rails-yelp-mvp-源码" 指的是一个基于Rails框架开发的类似于Yelp(美国知名餐饮评论网站)的最小可行产品...通过分析源码,你可以学习到Rails开发的实践技巧和设计模式,对于提升你的Web开发技能非常有帮助。

    Web 开发敏捷之道(应用Rails 进行敏捷Web 开发第三版)

    - **调试信息**:提供调试应用的方法和技巧。 #### 六、总结 通过上述内容可以看出,《Web 开发敏捷之道》这本书不仅涵盖了 Rails 的基础知识和技术细节,还深入探讨了如何利用 Rails 实践敏捷开发的理念。对于...

    tips-on-rails:Rails 开发人员的专业网络

    Rails 小贴士 曾经遇到过您不确定从哪里开始的情况吗? 如何实现 Rails 应用程序的特定部分? 完全不知道如何测试特定行为? Tips on Rails 是为像你这样的人制作的。 它是一个工具,可以让 Rails 用户学习、发布和...

Global site tag (gtag.js) - Google Analytics