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