zoukankan      html  css  js  c++  java
  • Ruby on rails开发从头来(四十八) ActiveRecord基础(动态查询)

        数据库上最常运行的查询莫过于根据指定条件返回符合的结果集,查询可能是返回所有名字为‘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_
  • 相关阅读:
    链表--判断一个链表是否为回文结构
    矩阵--“之”字形打印矩阵
    二叉树——平衡二叉树,二叉搜索树,完全二叉树
    链表--反转单向和双向链表
    codeforces 490C. Hacking Cypher 解题报告
    codeforces 490B.Queue 解题报告
    BestCoder19 1001.Alexandra and Prime Numbers(hdu 5108) 解题报告
    codeforces 488A. Giga Tower 解题报告
    codeforces 489C.Given Length and Sum of Digits... 解题报告
    codeforces 489B. BerSU Ball 解题报告
  • 原文地址:https://www.cnblogs.com/dahuzizyd/p/ruby_rails_study_48.html
Copyright © 2011-2022 走看看