赛迪网 > IT技术 IT技术重磅推荐 > 文章
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

让ActiveRecord更加active

发布时间:2007.09.19 09:20     来源:赛迪网技术社区    作者:baocl

广告语:你觉得Rails现在的ActiveRecord还不够活跃、还不够DSL吗?想让它更有抱负吗?那么你需要Ambition,马上装上这颗“野心”,让数据来的更猛烈些。

使用了本产品,你将可以:
User.first
"SELECT * FROM users LIMIT 1"

User.select { |m| m.name != 'macgyver' }
"SELECT * FROM users WHERE users.`name` <> 'macgyver'"

User.select { |u| u.email =~ /chris/ }.first
"SELECT * FROM users WHERE (users.`email` REGEXP 'chris') LIMIT 1"

User.select { |u| u.karma > 20 }.sort_by(&:karma).first(5)
"SELECT * FROM users WHERE (users.`karma` > 20)
ORDER BY users.karma LIMIT 5"

User.select { |u| u.email =~ 'ch%' }.size
"SELECT count(*) AS count_all FROM users
WHERE (users.`email` LIKE 'ch%')"

User.sort_by { |u| [ u.email, -u.created_at ] }
"SELECT * FROM users ORDER BY users.email, users.created_at DESC"

User.detect { |u| u.email =~ 'chris%' && u.profile.blog == 'Err' }
"SELECT users.`id` AS t0_r0 ... FROM users
LEFT OUTER JOIN profiles ON profiles.user_id = users.id
WHERE ((users.`email` LIKE 'chris%' AND profiles.blog = 'Err'))
LIMIT 1"

ORM?ROM?!
>> user = User.select { |u| u.name == 'Dio' }
=> (Query object: call #to_sql or #to_hash to inspect...)
>> user.to_sql
=> "SELECT * FROM users WHERE users.`name` = 'Dio'"

还担心从C中取到的数据而在V中根本没有用上而觉得浪费感情吗?
class BandsController < ApplicationController
def index
@bands = Band.sort_by(&:name)
end
end

现在 @bands 不再是一个数据集合在战斗,只有当真正访问到里面的数据条目时它才会召唤db engine附身,如:

Rocktastic Bands



    <% @bands.each do |band| %>
  • <%= band %>

  • <% end %>

更过份的是,你的缓存终于可以放开手脚可以大显身手了:

Rocktastic Bands


<% cache do %>

    <% @bands.each do |band| %>
  • <%= band %>

  • <% end %>

<% end %>


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· Web开发敏捷之道 (09-19) · 我做搜索架构的几个步骤 (09-19)
· AJAX推送与拉取方式的一些比较 (09-18) · JS中将字符串转为XML并读取对象的值 (09-18)
· Java程序员需要了解的几个开源协议 (09-18) · Java Web层的下一个王者是谁? (09-18)
· Java能为应用程序提供统一的平台吗? (09-18) · Java交互管理工具——SecureJSH发布 (09-18)
· 如何使用links方式配置eclipse! (09-17) · 数学能力高低对编程工作者有很大影响 (09-17)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
[政务][电信][金融][农业][制造业][中小企业]
[CIO][ERP][协同][IT管理][中间件][电子商务]
[政策][地方][专家][评估][辞典][博客][社区]
· 专题:一路畅通构想曲——让出行不再遭遇堵车
· CIO工作亲历:企业ERP选型不能忽视"选人关"
· 综述:信息化建设给中国监狱带来的各种变化
· 金融业风险管理和法规遵从有五点需考虑的因素
· 保险业CIO关注:该如何建立统一高效的CRM体系
· 调查显示:多数CIO对IT规划仍存在困惑和误解
  博客·论坛 ·曾剑秋·项立刚·Java学习·网管