0

您好,我将一个简单的搜索工具与 will_paginate 分页相结合,基于各自的优秀 RailsCasts 教程。

代码(在模型中)如下所示,

def search(search, page)

  # See RailsCasts #37 Simple Search Form & #51 will_paginate

  if search
    @matches = SalesActivity.where('salespeople.name LIKE ? OR products.name LIKE ?',
                                      "%#{search}%", "%#{search}%")

    @matches.paginate :per_page => 30,
                      :page => page,
                      :order => 'created_at DESC' # <--- causes exception
  else
    paginate :include => [:salesperson, :product],
             :order => 'created_at DESC',  # works 
             :per_page => 30,
             :page => page
  end
end

指定的排序在没有搜索的路径上的分页请求中工作正常。

但是,在使用搜索结果 (@matches) 的路径上,出现以下错误,

SQLite3::SQLException: ambiguous column name: created_at: SELECT ...  ORDER BY created_at DESC LIMIT 30 OFFSET 

如果我删除 order 参数,它工作正常。

我很感激有关如何解决此问题的建议。谢谢。

4

3 回答 3

0

这两个铁轨铸件都很旧,我会查看它们的来源,以确保它们的轨道 2 和 3 之间没有重大变化

还要仔细检查您是否在迁移过程中生成了 created_at。

于 2012-05-03T16:38:02.387 回答
0

此处的解决方法是将“all”添加到“where”请求的末尾,以根据 Active Record Query 协议启动实际查询以加载数据。

@matches = SalesActivity.where('salespeople.name LIKE ? OR products.name LIKE ?',
                                  "%#{search}%", "%#{search}%").all
于 2012-05-28T10:28:10.243 回答
0
@matches.paginate(:per_page => 30,:page => page).order('created_at DESC')
于 2016-03-10T15:00:08.393 回答