Ruby on rails 3 在不查询数据库的情况下创建Ransack对象

Ruby on rails 3 在不查询数据库的情况下创建Ransack对象,ruby-on-rails-3,ransack,Ruby On Rails 3,Ransack,我希望能够创建一个Ransack::Search对象,并将其传递到搜索表单中,但搜索对象的初始创建会查询数据库,我不希望这样 我想显示一个初始空白表单,其中包含要搜索的Ransack::Search选项,而不调用数据库 我该怎么做 谢谢 关于Arel关系,即在第一次引用结果时延迟执行查询,因此您应该发现,只要不在任何地方引用.result方法,就可以创建搜索对象并将其传递给表单,而无需表单调用db e、 g 其中任何一项都将触发实际执行的db查询: - @q.results.each do |r

我希望能够创建一个Ransack::Search对象,并将其传递到搜索表单中,但搜索对象的初始创建会查询数据库,我不希望这样

我想显示一个初始空白表单,其中包含要搜索的Ransack::Search选项,而不调用数据库

我该怎么做

谢谢


关于

Arel关系,即在第一次引用结果时延迟执行查询,因此您应该发现,只要不在任何地方引用.result方法,就可以创建搜索对象并将其传递给表单,而无需表单调用db

e、 g

其中任何一项都将触发实际执行的db查询:

- @q.results.each do |result| 
- for result in @q.results
- @q.results.count
- @q.results.to_a
- @q.results.size
// ....etc
但是,只要只对表单使用搜索对象,就不应该执行它


当然,如果您正在从控制台进行测试,请确保;nil,否则控制台将打印最后计算的内容,这将导致查询运行

是的,我在github存储库中解决了我的问题,但忘了在这里添加答案,谢谢!:-
- @q.results.each do |result| 
- for result in @q.results
- @q.results.count
- @q.results.to_a
- @q.results.size
// ....etc