如何有效地查询 rails 3 应用程序



我有一个搜索表单,可以查询数据库中的一个表,但有很多参数(语言、级别、创建者等)。如果填写了相关字段,下面的代码就可以工作,但我想将其更改为:

a) 添加更多参数(有几个);b) 允许字段为空

下面是控制器中的代码:

@materials = Material.find(:all, :conditions => {:targ_lang => params["targ_lang"],
                                                 :inst_lang => params["inst_lang"],
                                                 :level => params["level"]})

恐怕是全新的,但很多文档都建议我应该使用"where"。

从 Rails 3 开始,您可以使用 where() 函数:

@materials = Material.where(targ_lang: params["targ_lang"], inst_lang: params["inst_lang"], level: params["level"])

另外,您可以查看范围

这些允许您设置要在模型中执行的操作并在控制器中调用它,例如:

class Material < ActiveRecord::Base
  scope :active, where(active_state: true)
end

然后在控制器中执行以下操作:

@active_materials = Material.active

如果您要加入多个模型并希望保持控制器不那么混乱,这会很有用。

总而言之,就像@RVG所说,seachlogic非常有用,还有其他像Sphinx和Elastic Search这样的。您应该快速浏览一下这些并使用您觉得最舒适的一个。

如果您在

应用程序中使用搜索功能,我建议您使用SearchLogic gem

它易于使用且有效。

搜索逻辑

RailsCasts for searchlogic

相关内容

  • 没有找到相关文章

最新更新