【问题标题】:how would I translate this from searchlogic to metwhere in Rails 3?我如何将它从 searchlogic 转换为 Rails 3 中的metwhere?
【发布时间】:2011-09-30 04:53:00
【问题描述】:

我在 searchlogic 中有以下内容:

Todo.contact_id_is(self.id).ascend_by_original_date.done_date_not_null.first

既然我在 Rails 3 中,我将如何在 metawhere 中执行此操作?特别是 not_null 和排序?

你好,我有点困惑。当我查看在 meta_search(而不是 metawhere)中找到的命名范围时......这就是我正在寻找的更多......现在元搜索正在被 ransack 取代......

在我的模型上使用 sql 进行链式搜索的方法是什么,让 searchlogic 变得如此简单?

...好吧...现在看来 ransack 是针对表单的,但是对模型的查询是 squeel?检查出来....

【问题讨论】:

    标签: ruby-on-rails-3 meta-where


    【解决方案1】:

    metawhere 似乎没有 != 运算符,它是在 sqeel 中添加的,所以这是一个可能的解决方法

    Todo.where( { :contact_id => self.id} ).order( :original_date.asc ).where( '"todos"."done_date" NOT NULL' ).first
    

    【讨论】:

    • 我明白了....我认为contact_id_is 不起作用....?我得到一个方法丢失错误....
    • 等等,你用的是sqeel,我应该用sqeel吗?这有什么帮助?
    • 我得到一个错误,Postgres 不处理 NULL 吗? PGError:错误:在“NULL”第 1 行或附近出现语法错误:... AND “todos”。“asset_id”= 1)) AND (todos.done_date NOT NULL) ^ : SELECT COUNT(*) FROM “todos” WHERE (("todos"."asset" = 'Email' AND "todos"."asset_id" = 1)) AND (todos.done_date NOT NULL)
    • Postgres 理解NULL,但它似乎使用"todos"."done_date" 而不是todos.done_date。请尝试更新版本。我从文档中了解到Squeelmetawhere 的高级版本。它有更多的运算符。
    • 明白了,谢谢....我使用了你对 metawhere 所做的...我实际上发现 not_eq 与不相等
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多