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
條款並返回第一個對象。