У меня есть методы класса, подобные этим в модели "сообщения":
def delete_all_users_messages(user_id, parent_id)
message = Message.find_by_parent_id(parent_id)
message.children.where(:sender_id => user_id ).update_all(:sender_status => 1)
message.children.where(:recipient_id => user_id ).update_all(:recipient_status => 1 )
thread = message.message_thread
thread.update_attribute(:sender_status, 1) if thread.sender_id == user_id
thread.update_attribute(:recipient_status, 1) if thread.recipient_id == user_id
if thread.sender_status == 1 && thread.recipient_status == 1
thread.delete
Message.delete_all(:parent_id => parent_id)
end
end
def delete_all_users_selected_messages(message_ids, user_id, parent_id)
Message.where(:id => message_ids, :sender_id => user_id).update_all(:sender_status => 1)
Message.where(:id => message_ids, :recipient_id => user_id).update_all(:recipient_status => 1)
Message.where('id != ? AND parent_id = ?', parent_id, parent_id).where(:sender_status => 1, :recipient_status => 1).delete_all
thread = MessageThread.find_by_message_id(parent_id)
children_exist = thread.message.children.where('id != ? AND parent_id = ?', parent_id, parent_id).any?
unless children_exist
thread.delete
thread.message.delete
end
Я использую их в моем messages_controller, как это:
def destroy_all_messages
Message.delete_all_users_messages(current_user.id, params[:format])
flash[:success] = "Messages deleted"
redirect_to messages_path
end
def destroy_selected_messages
Message.delete_all_users_selected_messages(params[:message_ids], current_user.id, params[:format])
flash[:success] = "Messages deleted"
redirect_to :back
end
Я хотел бы также вернуть сообщение об ошибке, если что-то пошло не так ... но поскольку вся логика удаления сообщений в моей модели, это довольно сложно сделать.
Может ли кто-нибудь предоставить решение с примером того, как я мог бы использовать какое-то условие, чтобы показать свое сообщение об успешном завершении, если сообщения были удалены, и ошибку, если их не было, потому что что-то пошло не так. Должны быть какие-то маркеры, которые я могу поместить в методы класса, чтобы подтвердить, что они успешно прошли определенную точку.
Спасибо за ваше время
С уважением