【问题标题】:Rails seeding a boolean value not workingRails 播种布尔值不起作用
【发布时间】:2011-02-03 10:56:01
【问题描述】:

我正在使用带有 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)

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

【问题讨论】:

  • 感谢 Zabba,原来如此简单。

标签: ruby-on-rails postgresql boolean seed


【解决方案1】:

根据Rails Tutorial, Ch.10:“只有 attr_accessible 属性可以通过批量分配来分配”,即通过将 :admin => true 添加到初始化哈希中。

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

【讨论】:

    【解决方案2】:

    我很确定问题不在于默认值,因为代码看起来不错,您使用的是什么身份验证库?例如,我在使用 authlogic 时遇到过这样的问题。

    【讨论】:

      猜你喜欢
      • 2013-07-22
      • 2013-08-12
      • 2013-07-03
      • 2011-11-29
      • 2016-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多