【问题标题】:How do I use searchlogic to search on a belongs_to association?如何使用 searchlogic 搜索 belongs_to 关联?
【发布时间】:2010-09-29 03:12:30
【问题描述】:

联系人belongs_to status_contacts

我只想要那些没有赋值的联系人。

我安装了 searchlogic 插件。

我试过了:

contacts = Contact.status_contact_null

然后出错了。

我如何才能全面了解如何将关联与 searchlogic 结合使用,以及如何将其用于此特定搜索?

【问题讨论】:

    标签: ruby-on-rails searchlogic belongs-to associations


    【解决方案1】:
    Contact.status_contact_id_is(nil)
    

    应该生成如下所示的 SQL:

    SELECT * FROM `contacts` WHERE (contacts.status_contact_id IS NULL)
    

    Searchlogic 将 Ruby 的 nil 替换为 SQL 的 null

    你可以用ne做相反的事情(不等于)

    Contact.status_contact_id_ne(nil)
    

    github page for Searchlogic上有很多很好的例子

    【讨论】:

    • 哦,当我查看 hte github 页面时,我想它理解关联?它有一个用户和订单的例子......这有什么不同(与需要调出外键相比?)
    • 它确实理解关联,您可以通过在范围内链接方法来查看关联——例如。如果status_contactsname 列,则Contact.status_contact_name_is("Fred") 将起作用。但是当模型本身存在该方法时(例如status_contact_id),它会使用它,这是使该查询真正起作用的唯一方法。如果您愿意,您可以编写自己的命名范围以使其更具可读性
    • 我明白了……但 status_contact 不是一个协会吗?即使有了那个关联,它仍然需要外键吗?很难弄清楚如何使用搜索逻辑——这是唯一的例外吗?根据定义,不是所有关联都有外键吗?
    • 是的,status_contact 是一个关联,但该关联不能在这个特定查询中使用,因为当外键为 nil 时,(根据定义)没有关联的记录可以链接到。当外键不是null 时,您可以将关联用于其他方法(例如我给出的name 示例)。
    • 我明白了……所以这是因为它是 nil……但是他们有 _not_null 的方法呢?和_null?在示例中...?那不是检查null吗?
    猜你喜欢
    • 2013-01-21
    • 1970-01-01
    • 1970-01-01
    • 2017-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多