Добавление типа JSON в файл семян в Rails

Rails 5.2.3
MySQL 8 server with MySQL gem

Моя миграция работает нормально:

def change
  add_column :users, :roles, :json
end

Запись была создана в таблице пользователей как JSON. Проблема, с которой я столкнулся, связана с файлом семян.

Из файла семян:

users = [
             {'email':"[email protected]", 'first_name': "John", 'last_name': "Doe", 'status':'active', 'roles':"['admin']", 'password': "12345678", 'password_confirmation': "12345678"}
    ]
users.each do |user|
  User.create!(user) if User.find_by_email(user[:email]).nil?
end

Когда я запускаю грабли, я получаю следующую ошибку:

ActiveModel::RangeError: 1566947904332768 is out of range for ActiveModel::Type::Integer with limit 4 bytes
/db/seeds.rb:9:in `block in <main>'
/db/seeds.rb:8:in `each'
/db/seeds.rb:8:in `<main>'
/bin/rails:9:in `<top (required)>'
/bin/spring:15:in `<main>'
Tasks: TOP => db:seed
(See full trace by running task with --trace)

Process finished with exit code 1

Я также пробовал:

'roles':['admin']

Те же ошибки. Любые идеи?


person EastsideDev    schedule 27.08.2019    source источник


Ответы (1)


У вас проблема с вашим столбцом: необходимо обновить пароль или подтверждение пароля до limit (16) или что-то еще, чтобы принять символы, которые вы пытаетесь сохранить

    change_column :users, :password, :string, :limit => 55
    change_column :users, :password_confirmation, :string, :limit => 55

запустите миграцию с этими предложениями и позвольте нам сейчас, если это работает

person mdiaz00147    schedule 28.08.2019
comment
Нет. Если по какой-то причине мне не нужны жесткие ограничения, тип строки по умолчанию - 256 символов, а password и password_confirmation являются строковыми типами. Обратите внимание, что они содержатся внутри, поэтому не рассматриваются как целые числа. - person EastsideDev; 28.08.2019
comment
Какой атрибут в вашей таблице имеет целочисленный тип? - person mdiaz00147; 29.08.2019
comment
У меня нет атрибутов целочисленного типа - person EastsideDev; 29.08.2019
comment
если у вас нет целочисленных типов в этом столбце, останется только заполнить столбец id, есть ли у вас идентификаторы в этой модели? - person mdiaz00147; 29.08.2019
comment
Проблема заключалась в проверенном драгоценном камне. Он ожидал, что user_id будет целым числом, взял первые несколько символов из user_id и попытался превратить его в целое число. Ссылка: stackoverflow.com/questions/57700909/ - person EastsideDev; 29.08.2019