Rails播种布尔值不起作用

时间:2011-02-03 10:56:02

标签: ruby-on-rails postgresql boolean seed

我在Postgresql中使用Rails 3,我使用两次迁移定义了一个用户表(这里有两个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)

即使我指定了true,它也会创建一个admin等于false的用户。我应该首先创建User.new并设置管理员还是一起摆脱默认值?

2 个答案:

答案 0 :(得分:3)

根据Rails Tutorial, Ch.10:“只能通过质量分配指定attr_accessible属性”,即添加:admin =>对于初始化哈希是真的。

您可以执行User.create,然后执行user.toggle!(:admin)将您的特定用户设置为管理员。

答案 1 :(得分:1)

我非常确定问题不在于默认值,因为代码似乎没问题,您使用的是什么身份验证库?例如,我在authlogic中遇到过这样的问题。