mysql - Rails ActiveRecord delete record, associated records deleted one at a time -


here example... have users table references preferences. preferences table has user_id. when delete user, want delete records in preferences table well. however, using belongs_to , has_many association methods in models, activity on database:

  preference load (0.4ms)  select `preferences`.* `preferences` `preferences`.`user_id` = 2   sql (1.3ms)  delete `preferences` `preferences`.`id` = 2   sql (0.2ms)  delete `preferences` `preferences`.`id` = 6   sql (0.1ms)  delete `preferences` `preferences`.`id` = 16   sql (0.2ms)  delete `preferences` `preferences`.`id` = 28   sql (0.2ms)  delete `preferences` `preferences`.`id` = 34   sql (0.1ms)  delete `preferences` `preferences`.`id` = 44   useraccount load (0.3ms)  select `user_accounts`.* `user_accounts` `user_accounts`.`user_id` = 2   sql (0.2ms)  delete `user_accounts` `user_accounts`.`id` = 2 

is there proper way delete record using perhaps delete preferences user_id = xxxx? i'd way, because if preferences had millions of rows, lengthy query.

# user model has_many :preferences, dependent: :destroy  # preferences model belongs_to :user 

i overwrite destroy method, want see if there more elegant way this...

you can dependent: :delete_all option, instead of dependent: :destroy:

has_many :preferences, dependent: :delete_all 

this execute delete preferences user_id = {user_id}.


Comments

Popular posts from this blog

windows - Single EXE to Install Python Standalone Executable for Easy Distribution -

c# - Access objects in UserControl from MainWindow in WPF -

javascript - How to name a jQuery function to make a browser's back button work? -