依赖::破坏不工作

时间:2016-06-06 19:50:19

标签: ruby-on-rails associations

我有以下情况:

user.rb

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  after_create :create_profile
  after_create :programstart

  has_one :profile, dependent: :destroy
  has_many :weights, dependent: :destroy
  has_many :programstarts, dependent: :destroy

  has_many :user_nutrients, dependent: :destroy
  has_many :nutrients, through: :user_nutrients, dependent: :destroy


  private

  def programstart
    Programstart.create(:user_id => id)
  end
end

nutrient.rb

class Nutrient < ActiveRecord::Base
  validates :name, uniqueness: true

  has_many :user_nutrients
  has_many :users, through: :user_nutrients
end

user_nutrient.rb

class UserNutrient < ActiveRecord::Base
  belongs_to :user 
  belongs_to :nutrient
end

对于个人资料,权重和程序启动dependent: :destroy有效。删除用户时,将删除所有关联的数据库条目。但是,对于user_nutrientsdependent: :destroy无效。删除用户后,这些条目就在那里。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

根据这篇文章 - http://makandracards.com/makandra/32175-don-t-forget-automatically-remove-join-records-on-has_many-through-associations 你应该做到以下几点:

has_many :user_nutrients
has_many :nutrients, through: :user_nutrients, dependent: :destroy

和营养素.rb

has_many :user_nutrients
has_many :users, through: :user_nutrients, dependent: :destroy