我有一個用戶模型(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