2014-02-13 3 views
0

Я использую Ruby on Rails 4 с устройством для аутентификации пользователей.Rails 4, Devise - Не удается обновить имя пользователя из консоли rails

У меня возникла проблема с созданием пользователя с консоли или с отредактированного вида регистрации регистрации. Я могу установить пароль и электронную почту, но я не могу установить имя пользователя, мне нужно создать имя пользователя witouth и затем изменить его с dbconsole с помощью команды SQL («UPDATE users SET ...»). Тогда я могу войти с именем пользователя.

Моих пользователей таблица:

create_table "users", force: true do |t| 
    t.string "name",    default: "", null: false 
    t.string "email",    default: "", null: false 
    t.string "encrypted_password", default: "", null: false 
    t.datetime "remember_created_at" 
    t.integer "sign_in_count",  default: 0, null: false 
    t.datetime "current_sign_in_at" 
    t.datetime "last_sign_in_at" 
    t.string "current_sign_in_ip" 
    t.string "last_sign_in_ip" 
end 

Моих пользователи Модель:

class User < ActiveRecord::Base 
    devise :database_authenticatable, :registerable, 
     :rememberable, :trackable, :validatable 

    validates_presence_of :name, :email, :password 
    attr_accessor :name 
end 

Когда я пытаюсь

u = User.new 
u.name = "test" 

с рельсами консолью имени остается пустой.

ответ

0

Попробуйте удалить эту строку:

attr_accessor :name 
+0

Спасибо, это работает, но почему? – FuF

+0

'attr_accessor' - это метод Ruby для определения доступа к вашим переменным экземпляра. Rails (до 4.0) имеет метод 'attr_accessible' для защиты параметров. Они очень часто смешиваются. Когда вы вызываете 'attr_accessor', вы заворачиваете аксессоры Rails для своих полей. – marvelousNinja

+0

В принципе, 'ActiveRecord' магически определяет методы getter/setter для столбцов в вашей базе данных. Когда вы выполняете 'attr_accessor: name', вы переопределяете те, у которых есть обычные методы rubter getter/setter, которые просто получают/устанавливают переменную экземпляра' @ name', которая не имеет отношения к полю базы данных. – gregates

Смежные вопросы