如何重置/清除HAS_MANY与对象的关联关系

时间:2015-01-13 06:11:32

标签: ruby-on-rails ruby-on-rails-4 mongoid

例如,

staff = Staff.where(:id => 6).first
prize = Prize.where(:id => 3).first

staff.prizes.push(prize)

如何重置上述员工与奖品之间的关系?

class Staff  
  include Mongoid::Document
  has_many :prizes


class Prize
  include Mongoid::Document
  belongs_to :staff

1 个答案:

答案 0 :(得分:0)

在Rails中,带有belongs_to语句的模型包含foreign key。也就是说,您的Prize数据库表具有staff_id列。此列存储Staff模型的ID。

清除此关联的一种方法是将奖品的员工设置为nil

prize.staff = nil
prize.save

您也可以使用ActiveRecord's update method一步完成此操作:

prize.update(staff: nil)

或者,您可以使用the delete method删除prize

staff.prizes.delete(prize)