2013-08-03 102 views
0

單個記錄我使用的軌道v3.0.9軌3找到活動記錄收集

我無法弄清楚如何在活動記錄收集

我試圖用什麼方法找到我控制檯,

@customers = Customer.all  # returns collection of records 

@customer = @customers.find {|customer| customer.id == 1 } # returns the correct record 

現在,我使用的關聯集合在同一個find方法

@projects = @customer.projects # returns collection of Project records 

@project = @projects.find {|project| project.id == 1 } # got error 
    ActiveRecord::RecordNotFound: Couldn't find Project with ID=1... 

請任何人解釋如何查找方法不同於上述兩個例子

有沒有其他方式來查找關聯集合中的記錄?

我用陣列檢測,讓我的項目記錄

@project = @projects.detect {|project| project.id == 1 } # returns the correct record 

哪種方法最好是找到的活動記錄陣列單記錄?

回答

0

只要做到這一點:

@customer = Customer.find(customer_id) 

例如:

@customer = Customer.find(1) 
# => will return the customer with the id equal to 1 
0

你有幾個機會:

# this returns the customer with the id 1 - if a customer with id 1 exists! 
@customer = Customer.find(1) 
@customer = Customer.where(:id => 1).first 

# this returns the project with id 1 and customer_id = @customer.id 
@customer.projects.find(1) 
@customer.projects.where(:id => 1).first 

你的錯誤簡單的方法,那你沒有一個項目與ID = 1和CUSTOMER_ID = @ customer.id

要回答你的問題..你應該使用where查詢..這是新的軌道3的方式。所有查找方法在導軌4中不推薦使用,並從導軌內核中提取出來,作爲額外的寶石。

+0

它的罰款,但Model.find和Model.where子句將執行一個數據庫查詢,其中作爲陣列方法發現和檢測將通過迭代(不包括查詢)返回一個對象,所以我想Array方法 – nishanthan

+0

你是什麼意思?如果您在數據庫中保存的對象總是要詢問他們,讓他們走出你的數據庫的:-) .. – Mattherick

+0

假設我們在表(5個記錄)已經最低記錄,並要保存在單獨的變量中的每個對象進一步計算,最好使用Array方法查找並檢測ActiveRecord而不是ActiveRecord在哪裏查找。例如 http://stackoverflow.com/questions/17503221/rails3-which-is-better-code-for-performance – nishanthan