我有一个用户模型(has_many联系人)和一个联系人模型(belongs_to用户)。要发送邀请,我需要知道用户表中是否已存在用户的联系人,并更新联系人中的状态字段。我的共同领域是电话号码。
我过于简单化了:
用户:id,电话
联系人: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
答案 0 :(得分:1)
您可以尝试以下操作:
contacts = Contact.joins(:user).where("users.phone=contacts.phone and contacts.phone not NULL")
contact_ids = fetch ids from contacts array
Contact.update(your_array_of_ids, status: "registered")
答案 1 :(得分:0)
如果您要将用户状态更新为"已注册"只有当他们有电话号码时,您才能将他们的ID存储在一个数组中(例如,使用where
,然后您可以使用update方法,如下所示:
User.update(your_array_of_ids, status: "registered")