2013-06-04 61 views
0

Program.where(名称:“xxyyzz123”)AcitveRecord在其中方法将返回一个集合,即使只是一个记录匹配,这迫使我做丑陋的东西,如:匹配只是一条记录

提出方案。其中(名称: “xxyyzz123”)。first.age

提出Program.where(名称: “xxyyzz123”)[0]。年龄

当我知道肯定只有一条记录会匹配,是否有一种更简单的方法来从该记录中获取一个属性?谢谢!

回答

1

ActiveRecord的基于动态属性的查找程序(find_by_x)允许您选择数据库中匹配的第一条记录。例如:

Program.find_by_name('xxyyzz123') 

将返回第一条记录与NAME =“xxyyzz123”

注意,这些发现者在导轨4“温和不赞成使用”使用

Program.find_by(name: 'xxyyzz123") 

达到同样的事情当需要更新到Rails的下一个版本时,如果它们删除了前者的功能,可能会更容易。

有关更多信息,请参阅ActiveRecord :: Base中的the API

1

是的,您将不得不通过Program.where(name: "xxyyzz123").first.age访问,但是,在Rails 3中,通常建议使用以下方式执行该类型的查询:Program.find_by_name('xxyyzz123').age

轨道4不赞成上面的句法,建议您使用的语法如下:
Program.find_by(name: 'xxyyzz123')
如果您有多个条件,后来干脆:Program.find_by(name: 'xxyyzz123', lang: 'ruby')
幕后,它同样的蠢事 - where条款并返回第一个对象。