非常简单的问题——我如何搜索以ActiveRecord中某个字符串开头的所有记录.我在互联网上看到过各种各样使用类似于逐字逐句的SQL子句的地方——但据我所知,这不是"正确"的做法.

有没有"合适"的方式?

推荐答案

我强烈推荐Searchlogic插件.

那么就很简单了:

@search = Model.new_search(params[:search])
@search.condition.field_starts_with = "prefix"
@models = @search.all

与ActiveRecord一样,Searchlogic足够智能,可以在starts_with条件下识别字段名.它还将处理所有分页.

这种方法将有助于防止SQL注入,而且与数据库无关.Searchlogic最终会根据您使用的数据库适配器以不同的方式处理搜索.您也不必编写任何SQL!

Searchlogic有很好的文档,而且易于使用(我本人对Ruby和Rails是新手).当我陷入困境时,插件的作者甚至在几个小时内直接回复了一封邮箱,帮助我解决问题.我对Searchlogic的推荐太多了...正如你所知.

Ruby-on-rails相关问答推荐

删除链接不起作用,重定向 echo 示 Ruby

创建大哈希的 Ruby 方法

ruby on rails 中的自定义关联

Rails 3 的data-method='delete'如何优雅地降级?

Rails 自动加载完全大写的名称,如 API

Rails:用于创建固定长度 char(12) 列的迁移

循环大量记录时 Ruby on Rails 内存泄漏; find_each 没有帮助

使用 RSpec 和 Capybara (Rails) 测试重定向

rails, activerecord, 获取当前连接规范

基于 2 列定义唯一主键

如何使用 capistrano deploy 定位特定的提交 SHA

使用 oauth 和 twitter ruby​​ gem 时不断收到 OAuth::Unauthorized 错误

批量查找 mongoDB 记录(使用 mongoid ruby​​ 适配器)

使用 AJAX 向 Rails 发送 Authenticity Token 的正确方法

如何拯救 OmniAuth::Strategies::OAuth2::CallbackError?

如何为模型添加属性?

在rails国际化yml文件中传递变量

如何更改 Rails 3 控制器中视图文件的默认路径?

Ruby 更新后:测试失败,assets资源 未声明为在生产中预编译

Rails:如何在rails中使用dependent::destroy?