是否可以在Rails应用程序中在运行时创建数据库和表?
例如:服务器收到包含一些数据的请求。然后,它应该在PostgreSQL中创建一个数据库,并在该新数据库中创建一些表。这可能吗?
答案 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
希望有所帮助