У меня есть задача грабли, что выглядит следующим образом:ActiveRecord :: ReadOnlyRecord: Diff отмечен как неизменяемые на destroy_all
desc "Cleanup Snippets with Empty Diffs"
task cleanup_snippets_with_empty_diffs: :environment do
Snippet.includes(:diffs).where(diffs: { body: "<div class=\"diff\"></div>"}).destroy_all
end
Но когда я запускаю его, я получаю это:
$ rake cleanup_snippets_with_empty_diffs
rake aborted!
ActiveRecord::ReadOnlyRecord: Diff is marked as readonly
Что может быть причиной этого?
Edit 1
Обратите внимание, что моя Snippet.rb
модель выглядит следующим образом:
class Snippet < ApplicationRecord
has_many :diffs, dependent: :destroy
end
И Diff.rb
вроде этого:
class Diff < ApplicationRecord
belongs_to :snippet
end
Мне нравится эта идея. Но это не работает :( – marcamillion
Помните, что я использую 'includes', а не' joins'. – marcamillion
Извините «joins» Я имел в виду * соединение * и не обязательно метод 'joins'. См. Мой обновленный ответ для дальнейшего объяснение и возможное решение Спасибо. –