【问题标题】:Rails search - multiple specific model attributes selectorRails 搜索 - 多个特定模型属性选择器
【发布时间】:2014-01-30 22:30:15
【问题描述】:

我有一个包含大量属性的“事件”数据库。如何允许我的用户搜索“事件”。我已经看过有关进行文本搜索的教程,但我正在寻找更多的 ON/OFF 搜索。

每个事件都有时间、位置(坐标)和其他一些选择器。我希望用户能够根据时间(最小值、最大值)和/或位置(最接近其输入坐标)进行搜索并从选择器中进行选择。

我该怎么做?我应该看的任何具体教程。我在附近找不到任何东西。谢谢

必须包含多个属性和布尔数学(是“事件”位置 5 公里范围内的搜索位置。

谢谢

【问题讨论】:

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


【解决方案1】:

试试scopes。为模型中的每个可搜索属性创建一个范围。
例如时间属性:

scope :time_search, ->(min, max) { where("time_column > ? AND time_column < ?", min, max) }

然后从控制器:Model.time_search(params[:min], params[:max]).
您还可以链接范围,如下所示:Model.scope_1(param).scope_2(param),它将根据来自这两个范围的条件过滤记录。

【讨论】:

  • "Model.scope_1(param).scope_2(param) 并不意味着我应该将您的代码更改为“scope_1 :time_search”并且我的位置搜索应该是“scope_2 :location_search”?
  • 不。 scope 是一种用于定义新范围的 rails 方法(您不应该更改它)。作用域的名称是一个符号,定义如下:scope :your_scope_name_here.
猜你喜欢
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-02
  • 2014-11-02
  • 2011-01-03
相关资源
最近更新 更多