0
使用Rails 3积极关系,我有一个范围:在NULL(NULL)不匹配正确
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
为真时,它应该是false。
我认为这与mysql文档中的这个问题有关:“在SQL中,与任何其他值相比,NULL值都不为真,即使为NULL。”
我怎样才能得到这个返回正确的结果?
'范围= scope.where(:电子邮件=> [c.email,c.alternate_email] .compact.presence)如果email' – glebm 2010-09-29 03:32:36
我不认为电子邮件是在范围内的最后一个if子句... – DGM 2010-09-29 03:56:35