使用ActiveRecord 3 / Arel查找单个记录的最佳方法?

问题描述

| 我以前这样做的地方:
Foo.find_by_bar(\'a-value\')
我现在可以这样做:
Foo.where(:bar => \'a-value\').limit(1).first
推荐这个吗?这是最好的方法吗?我应该继续使用“旧”方法,因为它仍然是有用的语法糖,还是现在有一种更好的方法可以支持链接和所有其他好东西呢?     

解决方法

        Rails 4:
Foo.find_by bar: \'a_value\',wibble: \'a wibble value\'
    ,        我认为返回单个记录的更好方法是遵循第二个示例,但是您可以省略限制部分:
Foo.where(:bar => \'a-value\').first
如果要向查找添加更多条件,这将遵循新语法并支持链接。     ,        Rails为您提供了处理这类事情的全部魔术方法:
Foo.find_by_bar(\'a-value\')
您还可以使用多个属性:
Foo.find_by_bar_and_wibble(\'a foo value\',\'a wibble value\')
并附加一个!如果找不到任何内容,将导致它抛出RecordNotFound:
Foo.find_by_bar!(\'a-value\')
    ,        其他选择:
Foo.find(:first,conditions: { bar: \'a-value\' })
您还可以使用多个属性:
Foo.find(:first,conditions: { bar: \'a-value\',wibble: \'a wibble value\' })