Принудительная оценка запроса active_record - PullRequest
0 голосов
/ 25 апреля 2020

У меня есть модель

class Country
  has_many :graphs
end

и

class Graph
  has_one_attached :total_plot
  has_one_attached :delta_plot
end

Когда я создаю новый график с вложением total_plot, я хочу удалить все старые графики с вложением total_plot , В модели country.rb мой код выглядит следующим образом:

old_graphs = graphs.joins(:total_plot_attachment)
graph = Graph.make_a_new_total_plot #creates a new graph with a total_plot attached
old_graphs.destroy_all

Но это не работает, возможно, потому что old_graphs.destroy_all удаляет не только old_graphs, но и новый граф. Я думаю, что происходит то, что old_graphs загружается лениво и вычисляется только при выполнении old_graphs.destroy_all, когда новый граф включается в объединение и поэтому удаляется.

Если я добавлю выражение вроде puts "old_graphs: #{old_graphs.map(&:id)}" после первой строки это вызывает оценку и код работает, но как правильно заставить Graphs.joins(:total_plot_attachment) быть оцененным немедленно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...