0
我有一堆对象正准备在控制器中进行查询。我将这些对象传递给要过滤的方法,因为同一个过滤器应用于同一控制器中的多个操作。Rails控制器:将过滤器应用于ActiveRecord集合
def some_action
foos = Foo.where(nil)
filter_foos(foos)
stuff
end
def some_other_action
foos = Foo.where(nil)
filter_foos(foos)
other_stuff
end
def filter_objects(objects)
objects = objects.where(:bar => "baz")
end
但是,调用filter_objects似乎并没有改变foos。而且,当我向some_action发起一个控制器请求时,它甚至不会显示在我的查询中。在我的过滤器方法中,将raise objects.length.inspect
放在objects = objects.where
的任一侧,表明objects
的长度保持不变。
我想我对Ruby/Rails中的对象或查询的工作原理有一些基本的误解。有人能把我引向正确的方向吗?
这是下一个选项,设置等于方法的返回值的对象。它也可以工作;这是我得到的懒惰:) – Vardarac 2014-08-27 17:45:45