ruby-on-rails - 如何使用哈希 :condition on a . 查找 nil? Rails 中的方法(has_one 关系)

标签 ruby-on-rails find null

我想查找其 :has_one 与 :contact_status 关系的值没有值的所有联系人(这是否意味着零?)

我创建了一个alias_attribute :status, :status_contact

我可以做一些类似的事情吗:

contacts = Contact.find(:all, :conditions => {:contact_status => nil }, :include => {:status_contact} )

我不确定 nil 到底是如何工作的。基本上,我没有给它分配任何值,它只是一个 :has_one 关系。

编辑:听起来联系人应该是属于关系,因此进行更改 从评论来看,听起来联系人实际上应该与 status_contacts 具有 own_to 关系,而 status_contacts 又与联系人具有“has_one”关系。

我正在使用 Searchlogic 创建named_scopes...我认为它解决了问题,有人熟悉吗?

但是,有时用户可以为其分配一个值。我不希望这些内容出现在查找结果中。

当前出现此错误:

SQLite3::SQLException:“.”附近:语法错误:SELECT“联系人”。“id”AS t0_r0,“联系人”。“first_name”AS t0_r1,“联系人”。“姓氏” AS t0_r2,“联系人”。“标题” AS t0_r3,“联系人”。“电话” AS t0_r4,“联系人 "."传真"AS t0_r5,"联系人"。"电子邮件"AS t0_r6,"联系人"。"公司"AS t0_r7,"联系人"。"created_at"AS t0 _r8,“联系人”。“updated_at”AS t0_r9,“联系人”。“campaign_id”AS t0_r10,“联系人”。“输入日期”AS t0_ r11,“联系人”.“company_id” AS t0_r12,“联系人”.“address_id” AS t0_r13,“联系人”.“vcard_file_name” AS t0_r14,“联系人”。“vcard_content_type” AS t0_r15,“联系人”。“vcard_file_size” AS t0_r16,“联系人”。“vcar d_updated_at"AS t0_r17,"联系人"。"直接"AS t0_r18,"联系人"。"sugarcrm"AS t0_r19,"status_contacts"。 “id”AS t1_r0,“status_contacts”。“状态”AS t1_r1,“status_contacts”。“contact_id”AS t1_r2,“status_contac” ts"."created_at"AS t1_r3,"status_contacts"."updated_at"AS t1_r4 FROM "联系人"LEFT OUTER JOIN "状态 _contacts"ON status_contacts.contact_id = contact.id WHERE (:status_contact.status = NULL)

最佳答案

您的错误与您显示的代码不符。 我猜你正在做类似的事情

:conditions => ['status = ?', nil]

但是您应该检查的不是状态,它是链接的对象。这是您在 ruby​​ 代码中检查它的方式,但不是在 sql 中检查它。

在表中,您将有一个名为 status_contact_id 的字段,当该字段为 NULL(数据库相当于 nil)时,则没有关系。

所以你确实需要做类似的事情

contacts = Contact.find(:all, :conditions => "status_contact_id IS NULL")

[编辑]由于您使用的是 has_one 关系,请完全阅读该关系,外键确实是在 status_contacts 表中定义的。但是,查询没有任何 status_contacts 的项目会变得有点复杂。

在sql中,你会做类似的事情

select * from contacts where id not in (select contact_id from status_contacts)

我会把它翻译成 ruby​​,如下所示:

contacts = Contacts.find_by_sql("select * from contacts where id not in (select contact_id from status_contacts)"

就我个人而言,我现在想不出更好的方法。

关于ruby-on-rails - 如何使用哈希 :condition on a . 查找 nil? Rails 中的方法(has_one 关系),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3809750/

相关文章:

c++ - 如何展平多个文件中的#include 路径

string - 如何使用 VBA 在众多文本 .log 文件之一中查找特定字符串?

sql-server - Varchar 列 : Nullable or not

MySQL DATE_ADD() 当 DATE 为空时

css - 使用 Rails 的中型编辑器

ruby-on-rails - 我的客体关系有什么问题吗?

linux - 如何使用 find 在 CSH 中复制带前缀的文件?

csv - 无法将 CSV 复制到 postgreSQL 表中 : timestamp column won't accept the empty string

ruby-on-rails - 如何用 Grape 返回空响应?

ruby-on-rails - 当变量为 null 或为空时,Ruby on Rails : Using default value,