2015-11-01 45 views
0

如何添加級聯刪除將刪除任何用戶的配置文件,TodoList和TodoItem行刪除。級聯的刪除ActiveRecord

用戶模型:

class User < ActiveRecord::Base 
    has_one :profile 
    has_many :todo_lists 
    has_many :todo_items, through: :todo_lists, source: :todo_items 
    validates :username, presence: true 
    end 

資料型號:

class Profile < ActiveRecord::Base 
    belongs_to :user 

    validates :first_name, presence: true 
    validates :last_name, presence: true 

    validates :gender, inclusion: %w(male female) 

    validate :first_and_last 
    validate :male_Sue 


    def first_and_last 
     if (first_name.nil? and last_name.nil?) 
     errors.add(:base, "Specify a first or a last.") 
     end 
    end 

    def male_Sue 
     if (first_name == "Sue" and gender == "male") 
     errors.add(:base, "we are prevent male by name Sue.") 
     end 
    end 
    end 

TodoList的型號:

class TodoList < ActiveRecord::Base 

    belongs_to :user 
    has_many :todo_items, dependent: :destroy 
    default_scope { order :list_due_date } 
    end 

的TodoItem型號:

class TodoItem < ActiveRecord::Base 
    belongs_to :todo_list 

    default_scope {order :due_date } 
end 

謝謝,邁克爾。

回答

1

我想加dependent: :destroy就行。

#user.rb 
class User < ActiveRecord::Base 
    has_one :profile, dependent: :destroy 
    has_many :todo_lists, dependent: :destroy 
    has_many :todo_items, through: :todo_lists, source: :todo_items, dependent: :destroy 
    validates :username, presence: true 
end 
+0

謝謝,它的工作! –

1

從文檔:

has_manyhas_onebelongs_to協會支持:dependent選項。這允許您指定在刪除所有者時應刪除關聯記錄

通過在您的User類中的關聯上使用dependent: :destroy,無論何時銷燬用戶,該實例的所有關聯對象也會被銷燬。

您可以通過check this documentation瞭解更多信息。