Как добавить объект Hash в класс ActiveRecord?Пробовал, но миграция не удалась - PullRequest
1 голос
/ 06 июля 2011

Я хочу, чтобы мой класс ActiveRecord User содержал опции (набор строковых значений ключей), поэтому я написал:

rails generate migration AddOptionsToUser options:Hash

Он сгенерировал:

class AddOptionsToUser < ActiveRecord::Migration
  def self.up
    add_column :users, :options, :Hash
  end

  def self.down
    remove_column :users, :options
  end
end

Iтакже добавил эту строку в мой класс User:

serialize :options, Hash

Но миграция не удалась:

Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Hash' at line 1: ALTER TABLE `users` ADD `options` Hash

Я новичок в Rails, как обычно можно хранить кучустроковые значения ключа в классе ActiveRecord?

Ответы [ 2 ]

3 голосов
/ 06 июля 2011

Rails сериализует вещи в (YAML) строку. Поэтому в вашей базе данных тип должен быть строковым (или текстовым).

class AddOptionsToUser < ActiveRecord::Migration
    def self.up
       add_column :assessments, :options, :string
    end

    def self.down
       remove_column :assessments, :options
    end
end
1 голос
/ 06 июля 2011

Чтобы иметь объект ruby ​​в качестве атрибута модели ActiveRecord, вы должны использовать serialize метод внутри вашего класса для этого атрибута ссылка

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