如何将记录添加到用户模型

时间:2015-04-23 19:53:47

标签: ruby-on-rails ruby

我需要在用户模型中添加一条记录,使其成为管理员用户。

 @u = User.new(email: 'admin@gmail.com')
 @u.save

当我rake db:migrate我收到此错误时

rake aborted!
ActiveRecord::StatementInvalid: Could not find table 'users'
/usr/local/rvm/gems/ruby-2.1.5@rails4/gems/activerecord-4.2.0/lib/active_record/connection_adapters/sqlite3_adapter.rb:517:in `table_structure'

是的,我用devise来创建注册登录

class DeviseCreateUsers < ActiveRecord::Migration
  def change
    create_table(:users) do |t|
      ## Database authenticatable
      t.string :email,              null: false, default: ""
      t.string :encrypted_password, null: false, default: ""

user.rb

class User < ActiveRecord::Base

  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
  has_one :profiles
  # One user has one profile only
  @u= User.new 
  @u.admin@gmail.com


end

add_admin_to_users.rb

class AddAdminToUsers < ActiveRecord::Migration
  def change
    add_column :users, :admin, :boolean, :default => false
  end
end

update_users.rb

class UpdateUsers < ActiveRecord::Migration
  def change
    @u = User.find_by( email: 'admin@gmail.com')
    @u.update_attribute :admin , true
  #@u.update_attributes(:admin ,true) 
  end
end

错误

rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:

undefined method `update_attribute' for nil:NilClass/home/ubuntu/workspace/hrApp/db/migrate/20150404180803_update_users.rb:6:in `change'

2 个答案:

答案 0 :(得分:1)

从我所看到的,你似乎有一些代码在rails rake db:migrate命令期间加载环境时正在执行。

这意味着你可能有一些看起来像这样的代码

class User < ActiveRecord::Base
  # ... some other code
  @u = User.new(email: 'admin@gmail.com')
  @u.save
end

当rake加载rails环境时执行该代码,这可能不是你想要的或者在任何情况下应该做的。

移动代码以创建db/seed.rb文件的新管理员。然后,您可以执行迁移,然后通过运行rake db:seed

为您的数据库设定种子

此外,请勿使用迁移来修改数据库中的数据,以确定您要执行的操作。

答案 1 :(得分:0)

移动

 @u = User.new(email: 'admin@gmail.com')
 @u.save

app/db/seeds.rb。然后rake db:migrate创建表(如果它还不存在)和rake db:seed来创建您喜欢的任何数据(本例中是管理员用户)