Я не могу понять, почему мой зависит: опция не удалять мои ассоциации ...зависит:: delete_all объединение не удаление соответствующих записей
Rails api docs говорят это:
«Удалить или уничтожить?
has_many и has_and_belongs_to_many объединения имеют методы уничтожения, удаления destroy_all и delete_all.
...
Для has_many, destroy и destroy_all всегда будут вызывать метод уничтожения удаляемой записи (ов), чтобы выполнялись обратные вызовы. Однако delete и delete либо будут выполнять удаление в соответствии со стратегией, заданной опцией: зависимый параметр, или если задана опция: зависимая опция, то она будет следовать стратегии по умолчанию. Стратегия по умолчанию - ничего не делать (оставить внешние ключи с установленными родительскими идентификаторами), за исключением has_many: through, где стратегия по умолчанию - delete_all (удалить записи объединения, не выполняя обратные вызовы). "
Хорошо, так почему же не мой ... удалять ... сделать [я] удаление в соответствии со стратегией, указанной: зависимый вариант
У меня есть модель UserProfile, которая имеет has_many отношения с моим Модель CustomSkill, моя модель CustomSkill принадлежит_от Пользовательский профайл. Я установил зависимый:: delete_all в ассоциации что моя модель UserProfile имеет с CustomSkill, но когда я удаляю UserProfile, связанные с ним CustomSkills не удаляются.
P.S. Если я использую , уничтожаю при удалении моего UserProfile, это похоже на работу, но я стараюсь избегать использования обратных вызовов, которые должно выполняться delete/delete_all (если я правильно понимаю обратные вызовы, запускаю обратные вызовы модели rails, когда удаление происходит, потому что у меня их не закодировано).
Что мне здесь не хватает?
# Controller#destroy
def destroy
UserProfile.find_by_id(destroy_params).delete
redirect_to profiles_url, notice: 'Profile deleted'
end
# UserProfile model
class UserProfile < ActiveRecord::Base
...
has_many :custom_skills, dependent: :delete_all
end
# CustomSkill model
class CustomSkill < ActiveRecord::Base
...
belongs_to :user_profile
end
# Schema.rb
create_table "user_profiles", force: :cascade do |t|
t.string "type"
t.string "profile_name"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "user_id"
end
create_table "custom_skills", force: :cascade do |t|
t.string "name"
t.integer "user_profile_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end