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

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 recipes

    顾名思义,就是讲rails的小技巧,给你上rails的大餐,都是大牛们写的文章,对于想掌握常用技巧的开发者很有帮助

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

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

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

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

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

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

    scheherazade:Rails 的娱乐装置

    凭借 Sheherazade 的想象力和讲故事的技巧,固定装置可以像“一千零一夜”一样有趣。 目标 舍赫拉查德 想象合理的角色(自动创建有效的对象) 跟踪她的故事(在给定的上下文中重复使用对象) 穿得不多(最小的 ...

    documentation-guidelines

    文献资料 介绍 为什么代码文档很重要? 使用规范。 提供一个例子。 记录什么? 记录非典型代码。... 记录未来人们将要了解的决策...记录Rails代码的技巧。 例如,我应该记录我的控制器动作吗? 我应该在模型中记录什么?

    ember_demo_time_tracking

    Ember + Rails(API 服务器) ### ember 重构技巧: 概述: * application.model: store global data (or into window globally) * route: * declare model (original model data) * init controller's state ...

    MongoDB权威指南(中文版)高清

    数据库开发人员可将此书作为参考指南,系统管理员可以从本书中找到高级配置技巧,其他用户可以了解一些基本概念和用例。你会发现,将数据组织成自包含的JSON风格的文档比组织成关系型数据库中的记录要容易得多。编辑...

    JAVA上百实例源码以及开源项目源代码

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    JAVA上百实例源码以及开源项目

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

Global site tag (gtag.js) - Google Analytics