在Rails中在运行时创建数据库和表

时间:2018-01-11 15:58:20

标签: ruby-on-rails ruby postgresql

是否可以在Rails应用程序中在运行时创建数据库和表?

例如:服务器收到包含一些数据的请求。然后,它应该在PostgreSQL中创建一个数据库,并在该新数据库中创建一些表。这可能吗?

3 个答案:

答案 0 :(得分:0)

是的,它可能。也许不推荐。

答案 1 :(得分:0)

使用Sequel gem(http://sequel.jeremyevans.net/)可以在运行时创建数据库,运行SQL脚本。

我只尝试使用PostgreSQL数据库,不确定是否可以与其他人一起使用。

对于PostgreSQL数据库

连接到PostgreSQL服务器

要连接到PostgreSQL服务器,您始终必须定义要连接的数据库。使用'postgres'数据库,这是PostgreSQL服务器创建的默认数据库(更多信息:Default database named postgres on Postgresql server)。

class PersonView(ModelView):
    def create_form(self):
        form = super(PersonView, self).create_form()
        person_id = request.args.get('person_id')
        if person_id and not form.person_id.data:
            form.person_id.data = person_id
        return form

运行SQL脚本以创建数据库

db = Sequel.postgres('postgres', user, password, host, port)

答案 2 :(得分:-1)

最好和最安全的方法是使用seeds.rb文件。

例如,您可以添加新用户:

# db/seeds.rb
user = User.create!(email: 'my_user_email@domain.com', password: '123456789', firstname: "firstname", lastname: "lastname", phone: "0123456789", address: "my street address")

之后你需要在你的终端上运行:

rails db:seed

通过这种方式,您可以从不同的模型中添加所需的所有数据。这里有更多解释migrations-and-seed-data

希望有所帮助