rubyonrails:Ruby on rails开发从头来( 4十 8)- 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_

Tags:  rubyonrails安装 rubyforrails rubyrails rubyonrails

延伸阅读

最新评论

发表评论