我为“初创公司”创建了模型,视图和控制器。每个人(没有脚手架)。我有一个文件db> migrate>' 201 ..._ create_startups.rb'使用以下代码:
class CreateStartups < ActiveRecord::Migration
def change
create_table :startups do |t|
t.string :name
t.string :location
t.string :description
t.timestamps null: false
end
end
end
我跑了&#34;捆绑了exec rake db:migrate&#34;我收到了这个回复:
== 20141126011749 CreateStartups: migrating ===================================
-- create_table(:startups)
-> 0.0155s
== 20141126011749 CreateStartups: migrated (0.0159s) ==========================
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:
wrong number of arguments (1 for 0)/Users/kevinmircovich/.rvm/gems/ruby-2.0.0-p451/gems/activerecord-4.2.0.beta4/lib/active_record/connection_adapters/abstract_adapter.rb:271:in `initialize'
运行本地服务器并转到浏览器查看我的应用后,我会收到以下消息:
Migrations are pending. To resolve this issue, run: bin/rake db:migrate RAILS_ENV=development
Extracted source (around line #393):
392 def check_pending!(connection = Base.connection)
393 raise ActiveRecord::PendingMigrationError if ActiveRecord::Migrator.needs_migration?>.>(connection)
394 end
395
396 def load_schema_if_pending!
我跑了&#34; bin / rake db:migrate RAILS_ENV = development&#34;并且遇到了与我运行时相同的错误&#34;捆绑exec rake db:migrate&#34;:
错误的参数数量(1表示0)
答案 0 :(得分:2)
时间戳上不需要“null:false”:它不是用户的输入:这些是由活动模型本身设置的,因此您可以删除参数。
答案 1 :(得分:1)
在Rails迁移中,t.timestamp宏添加了两列,created_at和updated_at。这些特殊列由Active Record自动管理(如果存在)。
新的recored创建时会自动更新&amp;更新。
请从t.timestamp中删除null:false参数。
class CreateStartups < ActiveRecord::Migration
def change
create_table :startups do |t|
t.string :name
t.string :location
t.string :description
t.timestamps
end
end
end
答案 2 :(得分:1)
运行rake时收到了类似的错误:db migrate。为了解决我的问题,我运行了rake:db drop以删除我的数据库,因为我处于dev模式而没有生成数据库。然后我用rake db:create重新创建数据库,然后运行rake db:migrate成功。
运行rake db:migrate时出错 的ActiveRecord :: PendingMigrationError 迁移正在等待中; run&#39; bin / rake db:migrate RAILS_ENV = development&#39;解决这个问题。
决定使用:
rake db:drop - 这会将数据从数据库中删除 rake db:create rake db:migrate