我正在尝试创建一个包含3列网址,价格和时间戳的表格...我尝试了两个"更改"和" up"
class Shp < ActiveRecord::Base
def change
create_table :shps do |t|
t.string :url
t.float :price
t.timestamps
end
end
end
运行db:migrate似乎什么都不做,就像我做的那样
ActiveRecord::Base.connection.column_names("shps")
我得到的表只有默认列。
=> [#<ActiveRecord::ConnectionAdapters::SQLiteColumn:0x8fc8a34 @name="id", @sql_type="INTEGER", @null=false, @limit=nil, @precision=nil, @scale=nil, @type=:integer, @default=nil, @primary=nil, @coder=nil>, #<ActiveRecord::ConnectionAdapters::SQLiteColumn:0x8fc878c @name="created_at", @sql_type="datetime", @null=false, @limit=nil, @precision=nil, @scale=nil, @type=:datetime, @default=nil, @primary=nil, @coder=nil>, #<ActiveRecord::ConnectionAdapters::SQLiteColumn:0x8fc8444 @name="updated_at", @sql_type="datetime", @null=false, @limit=nil, @precision=nil, @scale=nil, @type=:datetime, @default=nil, @primary=nil, @coder=nil>]
答案 0 :(得分:1)
迁移类应继承自ActiveRecord::Migration
而非ActiveRecord::Base
。它们也应放在适当的目录(db/migrate
)中,其文件名应包含适当的时间戳。
要在模型中生成迁移,您应该输入您的控制台:
rails g model Shp url:string price:float
并运行迁移:
bundle exec rake db:migrate
为方便起见,BTW尝试使类名更具描述性。
答案 1 :(得分:1)
这应该有效:
应用/模型/ shp.rb:强>
class Shp < ActiveRecord::Base
set_table_name "shps"
end
<强>分贝/迁移/ 2013xxxxxxxxx_create_shps.rb:强>
class CreateShps < ActiveRecord::Migration
def change
create_table(:shps) do |t|
t.string :url
t.float :price
t.timestamps
end
end
end
HTH