Railscasts #2 Dynamic find_by Methods 动态find_by方法
来源:互联网 发布:python 数据分析实战 编辑:程序博客网 时间:2024/06/09 17:11
通过使用动态的find_all_by和find_by方法提高代码的可读性。
Rails中的find方法非常有用,下面是一个Task模型,定义了两个方法分别寻找所有未完成的task和最后一个未完成的task
class TaskController < ApplicationController def incomplete @tasks = Task.find(:all, :conditions => ['complete = ?', false]) end def last_incomplete @task = Task.find(:first, :conditions => ['complete =?', false], :order => 'created_at DESC') endend
使用find_all_by和find_by同样可以达到目的,并且提高了代码的可读性。将
@tasks = Task.find(:all, :conditions => ['complete = ?', false])替换为
@tasks = Task.find_all_by_complete(false)如果需要查找最后一条记录(按时间排序),则使用find_by_complete
将
@task = Task.find(:first, :conditions => ['complete =?', false], :order => 'created_at DESC')替换为
@task = Task.find_by_complete(false, :order => 'created_at DESC')find_by使用order参数的方法与find相同。
在项目中试了下:
Irm::People.find_by_first_name("Ironmine")生成的sql为
SELECT `irm_people`.* FROM `irm_people` WHERE `irm_people`.`first_name` = 'Ironmine' LIMIT 1
Irm::People.find_all_by_first_name("Ironmine")生成的sql为
SELECT `irm_people`.* FROM `irm_people` WHERE `irm_people`.`first_name` = 'Ironmine'
Irm::People.find_all_by_first_name("Ironmine",:order => 'created_at DESC')生成的sql为
SELECT `irm_people`.* FROM `irm_people` WHERE `irm_people`.`first_name` = 'Ironmine' ORDER BY created_at DESC
注:
动态finder方法在Rails4.0中已经不赞成使用,在Rails4.1中将被废除,应该使用Active Record scope替换动态finder。
原文链接:http://railscasts.com/episodes/2-dynamic-find-by-methods?view=asciicast
- Railscasts #2 Dynamic find_by Methods 动态find_by方法
- RailsCasts中文版,#2 Dynamic find_by Methods 使用动态的find_by方法进行查找操作
- find_by 方法
- Rails宝典之第二式: 动态find_by方法
- ABAP 动态生成内表的两种方法(Two Methods of Dynamic Internal Table Creation)
- ABAP 动态生成内表的几种方法(Several Methods of Dynamic Internal Table Creation)
- RailsCasts 2
- 多态,动态方法调度(dynamic method dispatch)?
- 动态方法解析(Dynamic Method Resolution)
- 静态(Static)、虚拟(Virtual)、动态(dynamic)方法区别
- 利用dynamic来提供动态方法的性能
- runtime系列3--Dynamic Method Resolution-方法的动态决议
- Struts2 ActionMethod 【DMI】(动态方法调用 Dynamic Method Invoke)
- Static methods 静态方法
- Factory Methods 工厂方法
- 方法调用(Calling Methods)
- Swift方法(Methods)
- Swift 方法(Methods)
- 各种SQL在PIG中实现
- Unity3d 2种重要方法的使用
- hdu 1075
- 走进C++程序世界------多重继承
- Linux输入输出的I/O缓冲
- Railscasts #2 Dynamic find_by Methods 动态find_by方法
- hud 1176 免费馅饼
- c c++ 把大写字母转换成小写的
- [LeetCode] Merge K sorted lists
- C#的代码审查清单
- hdu 2089 不要62
- Objective-C如何使用日期、时间与定时器学习系列之四
- 菜鸟,大牛和教主,三者的区别
- Mysql Oracle Sqlserver数据源配置