为什么我的用户对象不接受Ruby on Rails中某个字段的更改



我正在尝试更改当前运行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

最新更新