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
Post a Comment