Добавьте пользовательский столбец в пользовательскую модель, используя rails Clearance gem - PullRequest
1 голос
/ 22 марта 2012

Я использую драгоценный камень Clearance, чтобы добавить аутентификацию на мой сайт.Стандартная модель пользователя выглядит следующим образом:

class User < ActiveRecord::Base
  include Clearance::User
end

Теперь я хочу добавить дополнительные свойства в модель пользователя.Я создал эту миграцию:

class AddCustomernameToUsers < ActiveRecord::Migration
  def change
    add_column :users, :customername, :string
  end
end

После того, как rake db: migrate, в базе данных теперь есть еще один столбец для: customername

. Следующим шагом я отредактировал файл User Model так, чтобы он выглядел следующим образом:

class User < ActiveRecord::Base
  include Clearance::User
  attr_accessor :customername
end

В качестве следующего шага я зарегистрировал нового пользователя и использовал браузер базы данных sqlite, чтобы добавить тестовую строку 'charly' в поле имени клиента для этого пользователя.

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

thisUser = User.find(current_user.id)
puts thisUser.inspect

вывод консоли:

#<User id: 1, email: "test@test.de", encrypted_password: "0494a9b3b692acaea96ab57bed500adf26dbafa5", salt: "75c889d099438476204ce46b9cb406fb1f73423c", confirmation_token: nil, remember_token: "907b9bd600246d0b8dcc06a782457665f614b368", created_at: "2012-03-21 20:59:44", updated_at: "2012-03-21 21:12:59", customername: nil>

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

что я делаю не так?

Извините, я новичок в рельсах.Это может быть очень простым делом, но я изо всех сил старался и гуглил весь день и не мог заставить его работать, поэтому я перехожу к мудрости переполнения стека.Спасибо, ребята.

Ответы [ 2 ]

1 голос
/ 08 апреля 2013

Вместо использования attr_accessor в модели User, используйте attr_accesible: customername, и это будет работать. Потому что без attr_accessible данные не будут сохранены в вашей базе данных, и именно поэтому вы получаете нулевое значение для поля.

1 голос
/ 22 марта 2012

Вы уверены, что редактируете правильную базу данных при использовании браузера базы данных sqlite? В таком случае я бы попытался изменить ваш код создания пользователя, включив в него имя клиента, а не добавлять его с помощью отдельного инструмента и посмотреть, поможет ли это.

...