Program.where(名称:“xxyyzz123”)AcitveRecord在其中方法将返回一个集合,即使只是一个记录匹配,这迫使我做丑陋的东西,如:匹配只是一条记录
提出方案。其中(名称: “xxyyzz123”)。first.age
或
提出Program.where(名称: “xxyyzz123”)[0]。年龄
当我知道肯定只有一条记录会匹配,是否有一种更简单的方法来从该记录中获取一个属性?谢谢!
Program.where(名称:“xxyyzz123”)AcitveRecord在其中方法将返回一个集合,即使只是一个记录匹配,这迫使我做丑陋的东西,如:匹配只是一条记录
提出方案。其中(名称: “xxyyzz123”)。first.age
或
提出Program.where(名称: “xxyyzz123”)[0]。年龄
当我知道肯定只有一条记录会匹配,是否有一种更简单的方法来从该记录中获取一个属性?谢谢!
ActiveRecord的基于动态属性的查找程序(find_by_x)允许您选择数据库中匹配的第一条记录。例如:
Program.find_by_name('xxyyzz123')
将返回第一条记录与NAME =“xxyyzz123”
注意,这些发现者在导轨4“温和不赞成使用”使用
Program.find_by(name: 'xxyyzz123")
达到同样的事情当需要更新到Rails的下一个版本时,如果它们删除了前者的功能,可能会更容易。
有关更多信息,请参阅ActiveRecord :: Base中的the API。
是的,您将不得不通过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
条款并返回第一个对象。