2016-06-07 50 views
0

響應中選擇某條記錄我在我的控制器ActiveRecord的一個電話像這樣:ActiveRecord的

@configurations = EmailConfiguration.where(customer_id: '1', email_template: '1') 

這將返回有正確的參數都EmailConfigurations。每條記錄有一個field_id和一個the_value。我想在視圖中顯示的值:

@configurations.where(field_id: 1).the_value

我需要做什麼來添加到視圖中選擇一個由數據庫返回的集合中的某個記錄?

回答

0

您可以使用選擇一種陣列

@configurations.select {|c| c.field_id == 1} 

,將返回所有集合與FIELD_ID = 1。如果你知道有一個快速過濾器只有一個,你會IT連鎖的直接輸出:

@configurations.select {|c| c.field_id == 1}.first.the_value 
+0

可以更換'選擇...首先''查找' –

+0

「你可以用select來替換select ...」你可以這樣做,但它會導致N + 1查詢我認爲,因爲@configurations已經是對數據庫的一次調用。我很確定會發現另一個通常被認爲是不好的練習。 –

0
@configurations.where(field_id: 1) 

返回對象(數組)的集合,即使只有一個結果。如果你想只顯示一個你可以做如上提示:

@configurations.select {|c| c.field_id == 1}.first.the_value 

如果你想顯示所有的「the_values」你可以做

field_1_configs = @configurations.select do |c| c.field_id == 1 
end 

field_1_configs.map{|config| config.the_value }