我在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并设置管理员还是一起摆脱默认值?
答案 0 :(得分:3)
根据Rails Tutorial, Ch.10:“只能通过质量分配指定attr_accessible属性”,即添加:admin =>对于初始化哈希是真的。
您可以执行User.create
,然后执行user.toggle!(:admin)
将您的特定用户设置为管理员。
答案 1 :(得分:1)
我非常确定问题不在于默认值,因为代码似乎没问题,您使用的是什么身份验证库?例如,我在authlogic中遇到过这样的问题。