我正在使用rails v3.0.9
我无法弄清楚如何在活动记录集合中使用find方法
我在控制台中尝试了什么,
@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...
请任何人解释一下find方法与上述两个例子的区别
有没有其他方法可以在关联集合中找到记录?
我使用Array detect来获取我的项目记录
@project = @projects.detect {|project| project.id == 1 } # returns the correct record
哪种方法最适合从活动记录数组中查找单个记录?
答案 0 :(得分:0)
只需这样做:
@customer = Customer.find(customer_id)
例如:
@customer = Customer.find(1)
# => will return the customer with the id equal to 1
答案 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 queries..that是新的rails 3方式。所有find方法都在rails 4中被弃用,并从rails core中提取出来,形成一个额外的gem。