Ruby on rails数据库:您可以在代码中创建记录吗?

时间:2016-01-16 16:38:59

标签: ruby-on-rails

我想为我的应用程序创建管理员用户。我想在创建应用程序的同时创建管理员。就像我想要一个记录管理员在一开始就已经在数据库中。是否可以在实际创建应用程序之前初始化管理员,这样当我将应用程序放在heroku上并进入生产模式时,管理员已经在我的代码中指定了密码和用户名?

4 个答案:

答案 0 :(得分:1)

是的,可以使用seeds.rb完成。您可以在第一次部署后添加要在应用程序中加载的初始数据。

您可以编写要在seeds.rb中创建的第一个管理员

-list <Application Attempt ID>    List containers for application attempt.

在本地,你可以运行rake db:seed(填充初始数据)

如果您使用默认的PostgreSQL(heroku),则可以运行as,

yarn container -list appattempt_1452267331813_0009_000001

答案 1 :(得分:0)

您可以在rails中使用seeds.rb文件来创建所需的记录,而不是heroku上的heroku run rake db:seed

答案 2 :(得分:0)

我有时会这样做 - 向用户类添加before_create。它可以根据我的需要创建管理员。

before_create :first_user_admin

def first_user_admin
  self.admin = true if User.count == 0
end

答案 3 :(得分:0)

要添加到@Sasidaran的答案,您一定会关注Rails的seeds功能:

#db/seeds.rb
Model.find_or_create_by param: "Value"
Model.find_or_create_by param: "Value2"

$ rake db:seed
$ heroku run rake db:seed

最好将seeds文件视为batch file - 它只是运行您发送给模型等的命令,允许您包含所需的任何数据。您可以根据需要复杂或简单。

-

在您的情况下,我们不知道您的密码或密码是如何创建的。

如果你正在使用bcrypt-ruby,那么你会想要做之类的事情has_secure_password):

#app/models/user.rb
class User < ActiveRecord::Base
  has_secure_password
end

#db/seeds.rb
User.crate name: 'david', password: 'mUc3m00RsqyRe', password_confirmation: 'mUc3m00RsqyRe' #-> true

$ rake db:seed
$ heroku run rake db:seed

Devise以不同的方式做事(我相信)。如果您正在使用它,我可以使用相关信息进行更新。