• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Ruby on rails开发从头来(四十八)- ActiveRecord基础(动态查询) ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

    数据库上最常运行的查询莫过于根据指定条件返回符合的结果集,查询可能是返回所有名字为‘dave’的订单,或者是某个博客上所有标题含Railspost,在很多其他的框架和程序设计语言中,你需要创建sql来执行查询,Active Record利用了ruby语言所包含的动态能力来做这些事。

   例如,我们的Order Model包含了诸如nameemailaddress这样的属性,我们可以使用这些名字对应的find方法来查询,例如:

order = Order.find_by_name("Dave Thomas")

orders = Order.find_all_by_name("Dave Thomas")

order = Order.find_all_by_email(params['email'])

    如果你调用了一个Model类的find_by_或者find_all_by_这样字符串打头的格式的方法,Active Record将它们转换成一个查询器(finder),而将方法后面的字符串作为字段名转换find方法的参数,例如:

    order = Order.find_by_name("Dave Thomas", other args...)

    上面的调用等效的转换为:

    order = Order.find(:first,

:conditions => ["name = ?", "Dave Thomas"],

other_args...)

    类似的,调用一个find_all_by_xxx方法相当于调用find(:all… )方法。

    到这里魔术还没有停止,Active Record还可以对多个列创建查询器(finder),例如,你可以写:

    user = User.find_by_name_and_password(name, pw)

    相当于:

    user = User.find(:first,

:conditions => ["name = ? and password = ?", name, pw])

 

    为了确定要检查哪些字段,Active Record简单的分割find_by_find_all_by_后面的字符串,这在大多数情况下是够用的,除非你的根本就没有某个在方法名中包含的字段。

    注意,Active Record并不提供在find_by_find_all_by后面的两个字段名中含有_or_

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Ruby中require,load,和include的区别发布时间:2022-07-14
下一篇:
Linux 安装Ruby详解(在线和离线安装)发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap