如果我有一组尚未在数据库中的对象,我该如何查找它们?
我的情况如下:
@base_object = BaseObject.new
@tiny_little_object = @base_object.tiny_little_objects.build
@tiny_little_object.name = "Jake"
@tiny_little_object = @base_object.tiny_little_objects.build
@tiny_little_object.name = "Finn"
所以我有一堆初始化的对象,没什么特别的。现在我希望能够做到这一点:
#### Yes, rails 3 here, find_by_name
@base_object.tiny_little_objects.find_by_name("Jake")
但我得到的只是一个空数组。我怎样才能解决这个问题,除了迭代和比较之外还有一些优雅的方法吗?
答案 0 :(得分:1)
你可以使用standard Ruby - 毕竟这些都在一个集合中:
jakes = @base_object.tiny_little_objects.select { | object | object.name == 'Jake' }
答案 1 :(得分:1)
find_by_name
搜索数据库,因此它永远不会返回尚未保存的记录。但是,使用构建时,对象将存储在与基础对象关联的内存中。所以你应该能够找到一个
@base_object.tiny_little_objects.detect{|obj| obj.name == "Jake"}