【问题标题】:Search in different models depending on condition [ Ruby on Rails ]根据条件搜索不同的模型 [Ruby on Rails]
【发布时间】:2013-10-07 15:56:50
【问题描述】:

我是 Web 开发的新手,尤其是 RoR,所以如果这个问题太明显,我很抱歉。无论如何,我正在尝试创建一个房地产网站,只是想看看这一切需要做什么,而我却陷入了搜索困境。我有几个模型,每种类型的房地产,如公寓,办公室,车库等,当用户搜索公寓时,它应该使用“公寓”模型搜索,如果她搜索车库,那么它应该在“车库”模型等中搜索。那么,您能帮我看看我应该在控制器中放什么吗?

【问题讨论】:

  • 您可以使用选择框选择“搜索的对象类型”和简单的输入类型文本来编写关键字以查找“搜索的对象”

标签: ruby-on-rails ruby search controller


【解决方案1】:

定义从用户输入到类的映射。

SEARCH_TYPES = { 'apartment' => Flat, 'garage' => Garage, 'house' => House }

根据用户的输入确定类并像往常一样使用查找器方法。

def search
  if klass = SEARCH_TYPES[params[:search][:type]]
    klass.where(params[:search])
  else
    # handle no matching Class for type of search
  end
end

不做什么:尝试直接从参数中获取类。

【讨论】:

  • 您会创建一个新模型来执行此操作还是将其放入您的控制器中?
  • @HeliosdeGuerra:这取决于。一方面,委托类对于可读性和测试会更好。但另一方面,它只是一种方法和一个常数。简短:除非它获得更多代码或应该被重用,否则我会将它放在控制器中。
猜你喜欢
  • 2014-10-20
  • 1970-01-01
  • 2013-02-01
  • 2012-09-20
  • 1970-01-01
  • 1970-01-01
  • 2020-02-28
  • 1970-01-01
  • 2019-07-29
相关资源
最近更新 更多