搜索未保存的对象

时间:2014-05-30 13:25:05

标签: ruby-on-rails ruby ruby-on-rails-3

如果我有一组尚未在数据库中的对象,我该如何查找它们?

我的情况如下:

@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")       

但我得到的只是一个空数组。我怎样才能解决这个问题,除了迭代和比较之外还有一些优雅的方法吗?

2 个答案:

答案 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"}