Привет всем, у меня проблема с преобразованием запроса mysql в запрос rails.У меня есть эти модели -
class User < ApplicationRecord
has_many :comments, foreign_key: "commenter_id"
end
class Comment < ApplicationRecord
belongs_to :commenter, class_name: "User"
end
Может кто-нибудь помочь мне с преобразованием следующего запроса в запрос рельсов -
UPDATE comments
INNER JOIN users on comments.commenter_id = users.id
SET comments.deleted_at = users.deleted_at
WHERE users.deleted_at IS NOT NULL
Я пытаюсь сделать мягко удаляемые комментарии, чей комментатор был мягко удален.
ОБНОВЛЕНИЕ 1: пока я могу сделать это с помощью этого -
User.only_deleted.includes(:comments).find_each do |u|
u.comments.update_all(deleted_at: u.deleted_at)
end
Но я хочу сделать это для одного запроса без необходимости перебирать результат.
ОБНОВЛЕНИЕ 2: я использую гем от activ_as_paranoid, поэтому нужен неопубликованный пользователь, и мой последний запрос стал:
User.unscoped{Comment.joins(:commenter).where.not(users: {deleted_at: nil}).update_all("comments.deleted_at = users.deleted_at")