Как сохранить объект в Rails

Я реализую своего рода рубиновый онлайн-терминал (просто для практики). Я использую AJAX из простого веб-приложения js для вызова метода, который уклоняется от ввода "терминала". Чтобы избежать проблем со средой и позволить пользователю создавать свои собственные объекты, я использовал объект "привязки". Проблема в том, что я не знаю, как сохранить привязки.

Моя первая идея состояла в том, чтобы создать привязку, которая сохраняется между запросами постов при каждом доступе пользователя к приложению. В этот момент создается пара ключ-объект с уникальным ключом и новой привязкой. Затем ключ передается клиенту. Когда пользователь отправляет строку для оценки через ajax, я отправляю ключ. Затем я могу получить объект привязки и обновить его.

Я попробовал что-то вроде:

class TerminalController
    @@bindings = {}

    def index
        @token = keyToken
        @@bindings[@token] = getBinding
    end

    private

        def keyToken
            Digest::MD5.hexdigest(Time.now.to_s)
        end

        def getBinding
            # declare methods for all bindings
            # ...
            binding
        end
end

Но во время выполнения код не может создать пару ключ-значение. На самом деле, все, что я пытаюсь выполнить после этой строки, терпит неудачу. Я не понимаю почему.

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

1 ответ

К сожалению, я не думаю, что есть способ сериализации привязки в большинстве реализаций Ruby. Если вы попытаетесь связать Marshal.dump, вы получите ошибку TypeError в MRI ( Marshal - встроенная библиотека для сериализации объектов в Ruby).

Могут быть и другие способы сделать то, что вы пытаетесь сделать. Однако, если вам нужно сериализовать привязку, взгляните на MagLev. Эта реализация разработана таким образом, что любой объект может быть сохранен.

Другие вопросы по тегам