现在我们知道如何指定条件,现在我们来看看find方法支持的一些其他设置。
首先,理解find(:first,…)方法是非常重要的,该方法在同样的conditions设置下,和find(:all,…)方法生成同样的sql语句,不同之处仅在于只返回一条记录。在调用的时候,一种的参数为:first,另一种为:all。
find方法执行一个select from这样的sql语句,:all标记指定返回表中所有的记录,:first返回第一条记录。但是现在:first还不能保证你得到的就是表中的第一条记录,原因是什么?我们继续往下看。
:conditions参数指定了SQL语句的where部分,可以包含Sql语句或者包含可以替换的参数的名字,值,上一篇我们已经做了了解。
daves_orders = Order.find(:all, :conditions => "name = 'Dave'") name = params[:name] other_orders = Order.find(:all, :conditions => ["name = ?", name]) yet_more = Order.find(:all, :conditions => ["name = :name and pay_type = :pay_type", params])
上面的find方法并不能保证按照特定的顺序返回记录,除非指定查询的排序(order by)部分。:order参数就是用来指定SQL的排序条件的,下面的例子演示了查询名字为Dave的订单,并且按照pay_type,shipped_at字段进行降序排列。
orders = Order.find(:all, :conditions => "name = 'Dave'", :order => "pay_type, shipped_at DESC")
我们还可以设置:limit参数来限制返回的记录数,如果你使用:limit参数,或许还想指定排序条件,下面的例子返回10条记录,并且按照指定条件排序:
orders = Order.find(:all, :conditions => "name = 'Dave'", :order => "pay_type, shipped_at DESC", :limit => 10)
参数:offset经常与:limit参数一同出现,用来指定从第一条记录起,返回指定的偏移量,下面代码演示了:offset参数的使用:
def Order.find_on_page(page_num, page_size) find(:all, :order => "id", :limit => page_size, :offset => page_num*page_size) end
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索参数
, 方法
, find()
, find
, name
, all
, order
order方法
rails activerecord、ruby activerecord、ruby on rails、ruby on rails 教程、ruby rails,以便于您获取更多的相关知识。