一尘不染

ActiveRecord可以在迁移之外创建表吗?

sql

我正在使用非Rails Web应用程序,因此默认情况下没有迁移脚本。

Sequel ORM使我可以在脚本中轻松创建表:

#!/usr/bin/env ruby

require 'rubygems'
require 'sequel'

## Connect to the database
DB = Sequel.sqlite('./ex1.db')

unless DB.table_exists? :posts
  DB.create_table :posts do
    primary_key :id
    varchar :title
    text :body
  end
end

有没有办法在迁移之外使用ActiveRecord做到这一点?


阅读 145

收藏
2021-03-17

共1个答案

一尘不染

我目前的理解是,所有修改数据或架构都必须通过迁移来完成。我在github上一个完整的rakefile,可用于在Rails之外执行迁移。

或者,如果只是初始化脚本,则可以使用以下内容。

ActiveRecord::Base.establish_connection(
   :adapter   => 'sqlite3',
   :database  => './lesson1_AR.db'
)

ActiveRecord::Migration.class_eval do
  create_table :posts do |t|
        t.string  :title
        t.text :body
   end

   create_table :people do |t|
      t.string :first_name
      t.string :last_name
      t.string :short_name
   end

   create_table :tags do |t|
      t.string :tags
   end 
end
2021-03-17