【发布时间】:2017-02-08 11:50:19
【问题描述】:
我正在尝试使用 Sinatra 和 Sinatra/活动记录创建活动记录,我的迁移正在迁移到 Postgres 数据库,但没有在数据库中创建表,我通过了所有可能的堆栈溢出解决方案,但它的没用。我什至尝试从 db/migrate 文件夹中删除我的迁移文件,但输出仍然相同。应该是什么错误
宝石文件
source 'https://rubygems.org'
gem "sinatra"
gem "pg" #for postgres
gem "activerecord"
gem "sinatra-activerecord"
config.ru
require "./app"
run Sinatra::Application
rakefile.rb
require "./app"
require "sinatra/activerecord/rake"
app.rb
require 'sinatra'
require 'sinatra/activerecord'
db = URI.parse('postgres://project1:project1@localhost/*****')
ActiveRecord::Base.establish_connection(
:adapter => db.scheme == 'postgres' ? 'postgresql' : db.scheme,
:host => db.host,
:username => db.user,
:password => db.password,
:database => db.path[1..-1],
:encoding => 'utf8'
)
class Note < ActiveRecord::Base
end
class CreateNotes < ActiveRecord::Migration
def up
create_table :notes do |t|
t.string :title
t.text :body
t.timestamps
end
end
def down
drop_table :notes
end
end
迁移输出
user@user-Inspiron-5520:~/rails-apps/project1$ rake db:migrate
== 20150704053019 CreateNotes: migrating ======================================
== 20150704053019 CreateNotes: migrated (0.0000s) =============================
数据库输出 (psql)
\dt
List of relations
Schema | Name | Type | Owner
--------+-------------------+-------+-----------
public | schema_migrations | table | project1
(1 row)
project1=# select * from schema_migrations;
version
----------------
20150704053019
(1 行)
注意: Project1 用户是拥有所有权限的超级用户
编辑
迁移文件 20150704053019_create_notes.rb
class CreateNotes < ActiveRecord::Migration
def change
end
end
【问题讨论】:
-
我猜你已经尝试过
rake db:rollback,然后重新运行? -
你能发布迁移文件吗?
-
您用于创建 notes 表的迁移实际上保存在
app.rb中。但是 migrate 任务会在db/migrate中查找迁移。如果您在底部提供的迁移文件在正确的目录中,则将迁移定义从 app.rb 移动到那里。 -
非常感谢它正在工作,我理解我的错误。首先,我没有为我的应用程序制定任何适当的工作流程和文件夹结构,因此它变得一团糟。
-
@limekin 我建议您将其作为答案,因为 Ankita.P 清楚地发现它很有帮助并会接受它,以便您获得代表。
标签: ruby activerecord sinatra psql sinatra-activerecord