Рельсы, высеивающие логическое значение, не работают - PullRequest
1 голос
/ 03 февраля 2011

Я использую Rails 3 с Postgresql, и у меня есть пользовательская таблица, определенная с помощью двух миграций (вот два метода self.up):

  def self.up
    create_table(:users) do |t|
      t.database_authenticatable :null => false
      t.recoverable
      t.rememberable
      t.trackable

      # t.confirmable
      # t.lockable :lock_strategy => :failed_attempts, :unlock_strategy => :both
      # t.token_authenticatable


      t.timestamps
    end


  def self.up
    add_column :users, :admin, :boolean, :default => false
  end

Теперь, когда я иду и пытаюсь заполнить этос пользователем-администратором, например, так:

  User.create(:username => "admin", :email => "foobar@gmail.com",:password => "password", :password_confirmation => "password", :admin => true)

Создает пользователя с правами администратора равными false, хотя я указал true.Должен ли я сначала создать User.new и настроить администратора или просто избавиться от настроек по умолчанию все вместе?

Ответы [ 2 ]

3 голосов
/ 25 мая 2011

Согласно Rails Tutorial, Ch.10 : "только массовые присваивания могут быть назначены только атрибуты attr_accessible", т. Е. Путем добавления: admin => true к хешу инициализации.

Вы можете сделать User.create, а затем user.toggle!(:admin), чтобы установить вашего конкретного пользователя в качестве администратора.

1 голос
/ 03 февраля 2011

Я почти уверен, что проблема не в значении по умолчанию, потому что код выглядит нормально, какую библиотеку аутентификации вы используете?У меня были такие проблемы с authlogic, например.

...