我有一个用户模型(has_many contacts)和一个联系人模型(belongs_to user)。要发送邀请,我需要知道用户表中是否存在用户的联系人,并更新联系人中的状态字段。我常见的领域是电话号码。基于在另一个表中查找rails更新字段
所以简单化,我有:
用户:身份证,手机
联系人:ID,姓名,电话,状态,user_id说明
我怎样才能将状态设置为 “注册” 为用户的联系人以有效的方式?
我现在有这个迭代,这工作,但必须有一个更好的办法:
all_contacts = Contact.where(user_id: user).where.not(phone: nil)
all_contacts.each do |contact|
a = User.find_by(phone: contact.phone)
if a
contact.status = 'registered'
contact.save
end
end
谢谢!这正是我所期待的。这样,就不需要迭代。 join和where子句处理查找注册为用户的联系人。数据库在这种情况下非常高效,根据需要使用索引和内存。 – Augusto