Rails 以外のプロジェクトで ActiveRecord と rails migration を使用しようとしています。standalone_migrations gemをインストールしましたが、動作しているようです。テストするために、2つの移行を作成しました
rake db:new_migration name=users
rake db:new_migration name=logins
ここに私の移行ファイルがあります:
class CreateUsers < ActiveRecord::Migration
def self.up
create_table(:users) do |t|
t.string :full_name, :null => false
# Database authenticable
t.string :username, :null => false, :default => '', :unique => true
t.string :encrypted_password, :null => false, :default => ''
end
end
def self.down
drop_table :users
end
end
class CreateLogins < ActiveRecord::Migration
def self.up
create_table :logins do |t|
t.integer :user_id, :null => false
t.datetime :logged_in_at, :null => false
t.datetime :logged_out_at, :null => false
end
end
def self.down
drop_table :logins
end
end
その後、実行rake db:migrate
しましたが、うまくいくようです:
== CreateUsers: migrating ====================================================
-- create_table(:users)
-> 0.0020s
== CreateUsers: migrated (0.0020s) ===========================================
== CreateLogins: migrating ===================================================
-- create_table(:logins)
-> 0.0020s
== CreateLogins: migrated (0.0020s) ==========================================
standalone_migrations gem マニュアルと同じように、db/migrate
フォルダーと構成があります。db/config.yml
ただし、ユーザー モデルを作成すると、次のようになります。
require '../../db/dbconnect'
p ActiveRecord::Base.connection.tables
class User < ActiveRecord::Base
end
User.new
最初にテーブルの空のリストを取得し、次に例外を取得します
Could not find table 'users' (ActiveRecord::StatementInvalid)
機能させるにはどうすればよいですか?
編集1:
私のdb/config.yml
:
development:
adapter: sqlite3
database: development.db
encoding: utf8
production:
adapter: sqlite3
database: aquareader.db
encoding: utf8
test: &test
adapter: sqlite3
database: test.db
encoding: utf8
そして私のdb/dbconnect.rb
:
require 'rubygems'
require 'active_record'
require 'yaml'
# read the connection information from the database config file
dbconfig = YAML::load(File.open(File.expand_path(File.dirname(__FILE__) + '/config.yml')))
# connect to the database
ActiveRecord::Base.establish_connection(dbconfig['development'])
編集2:
私のdevelopement.db
テーブルが、正しいテーブルとすべてを含むルートフォルダーに移行を作成していることがわかりました。ただし、実行すると、プロジェクト ディレクトリにlib/myproject/users.rb
が作成development.db
され、ファイルで指定されたものは使用されませんdbconnect.rb
。理由はありますか?