假设我的模型User
带有columns: name, mobile, email, card_num, etc.
手机,电子邮件,card_num无法复制。
validates_uniqueness_of :mobile
validates_uniqueness_of :email
validates_uniqueness_of :card_num
是否有任何检查,最多在 ONE 查询任何重复记录并返回重复列?
现有记录:
name mobile email card_num
============================================
Mary 65666678 mary@gmail.com A001
新纪录1:
name mobile email card_num
============================================
Peter 65666678 peter@gmail.com A002
将返回“移动”
新纪录2:
name mobile email card_num
============================================
Peter 74009822 mary@gmail.com A002
将返回“电子邮件”
新纪录3:
name mobile email card_num
============================================
Peter 65666678 mary@gmail.com A001
返回“电子邮件”/“移动”/“ card_num ”即可。
答案 0 :(得分:0)
嘿,你可以这样试试:
考虑您正在插入新记录-2然后您只需触发查询:
User.select("CASE
WHEN (name = 'Peter') THEN 'name'
WHEN (mobile = '74009822') THEN 'mobile'
WHEN (email = 'mary@gmail.com') THEN 'email'
ELSE 'card_num'
END as col_name").where("name = 'Peter' or mobile = '74009822' or email = 'mary@gmail.com' or card_num='A002'")