Используя активное отношение Rails 3, у меня есть область действия:
scope :duplicate_contact, lambda {|contact| where(
:person_id => contact.person_id,
:salutation => contact.salutation,
:first_name => contact.first_name,
:last_name => contact.last_name,
:suffix => contact.suffix,
:birthday => contact.birthday,
:address => contact.address,
:city => contact.city,
:state => contact.state,
:zip => contact.zip,
:phone_1 => [contact.phone_1,contact.phone_2,contact.phone_3],
:phone_1_type => [contact.phone_1_type,contact.phone_2_type,contact.phone_3_type],
:phone_2 => [contact.phone_1,contact.phone_2,contact.phone_3],
:phone_2_type => [contact.phone_1_type,contact.phone_2_type,contact.phone_3_type],
:phone_3 => [contact.phone_1,contact.phone_2,contact.phone_3],
:phone_3_type => [contact.phone_1_type,contact.phone_2_type,contact.phone_3_type],
:email => [contact.email,contact.alternate_email],
:alternate_email => [contact.email,contact.alternate_email]
)
}
Эта проблема возникает, когда: электронная почта имеет значение NULL. Он возвращает ноль строк, когда фактически должен возвращать хотя бы 1 строку, т. Е. duplicate_contact(contact).size == 0
имеет значение true, когда оно должно быть ложным.
Я думаю, что это связано с этим заявлением из документации mysql: «В SQL значение NULL никогда не является истинным по сравнению с любым другим значением, даже NULL».
Как я могу получить это, чтобы вернуть правильный результат?