我正在尝试更改当前运行select_prayer_partner
方法的用户,使其prayer_partner_id
等于合作伙伴的id
。并且,合作伙伴的prayer_partner_id
等于当前用户的id
。
class User < ApplicationRecord
# a bunch of code here
def select_prayer_partner
partner = User.where("denomination not in(?)", [self.denomination])
.where("location not LIKE ?", [self.location.split(",")[1].strip])
.where("prayer_partner_id IS NULL").sample
self.prayer_partner_id = partner.id
partner.prayer_partner_id = self.id
end
end
在rails控制台中,我发现self.prayer_partner_id = partner.id
工作得很好,祈祷伙伴id成功地更改为SQL查询提供的伙伴id,该查询需要不同的教派、不同的州或国家,并且当前没有祈祷伙伴。不幸的是,partner.prayer_partner_id = self.id
不起作用——其他用户的prayer_partner_id
仍然是nil
。有什么想法吗?
在Mehmet Adil Istikbal的帮助下,我发现我需要在partner
对象上调用.save
来将更改保存到数据库中。现在一切正常。
class User < ApplicationRecord
# a bunch of code here
def select_prayer_partner
partner = User.where("denomination not in(?)", [self.denomination])
.where("location not LIKE ?", [self.location.split(",")[1].strip])
.where("prayer_partner_id IS NULL").sample
self.prayer_partner_id = partner.id
partner.prayer_partner_id = self.id
partner.save #this is what I forgot to do - save the partner
end
end