我找不到包含所有数据类型列表的活动记录文档页面.
有人可以帮我吗?
我正在将Devise添加到现有的Rails应用程序中,并且已经定义了Users表.设计生成器推出了以下迁移:
class AddDeviseToUsers < ActiveRecord::Migration
def self.up
change_table(:users) do |t|
## Database authenticatable
t.string :email, :null => false, :default => ""
t.string :encrypted_password, :null => false, :default => ""
## Recoverable
t.string :reset_password_token
t.datetime :reset_password_sent_at
## Rememberable
t.datetime :remember_created_at
## Trackable
t.integer :sign_in_count, :default => 0
blah blah blah....
end
add_index :users, :email, :unique => true
add_index :users, :reset_password_token, :unique => true
end
Run Code Online (Sandbox Code Playgroud)
没有生成向下迁移,我有一点时间删除这些索引.我在文档中看到了不同的建议表示法,并在网上提出了不同的建议,但似乎没有一个对我有用.例如...
def self.down
change_table(:users) do |t|
t.remove :email
t.remove :encrypted_password
t.remove :reset_password_token
blah blah blah...
end
remove_index …Run Code Online (Sandbox Code Playgroud) 使用rails迁移很容易删除列.
class SomeClass < ActiveRecord::Migration
def self.up
remove_column :table_name, :column_name
end
end
Run Code Online (Sandbox Code Playgroud)
我想知道是否有任何方法可以使用控制台从表中删除列.
activerecord ruby-on-rails rails-migrations ruby-on-rails-3.2
我创建了一个User模型,后来创建了一个Task模型.创作时我没有提到它们之间的任何关系.
我理解User has_many Tasks和a Task belongs_to User.我需要通过迁移在它们之间建立这种关系.
我的问题是,建立这种关系的迁移生成命令是什么?
任何帮助将受到高度赞赏.
ruby-on-rails rails-migrations ruby-on-rails-4 rails-activerecord
在Rails 4.0.0.rc1,Ruby 2.0.0上,运行迁移后,当我尝试运行测试时,我看到以下错误rspec:
/Users/peeja/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/activerecord-4.0.0.rc1/lib/active_record/migration.rb:376:in`check_pending! ':正在等待迁移; 运行'rake db:migrate RAILS_ENV = test'来解决此问题.(ActiveRecord的:: PendingMigrationError)
这似乎不对.没有人迁移他们的测试数据库,是吗?他们db:test:prepare,这是公平的 - 我忘了做.所以我再次运行rake db:test:prepare并运行我的rspec命令......并看到同样的错误.
如果我真的rake db:migrate RAILS_ENV=test,错误确实消失了.
这是怎么回事?这是Rails 4中的新功能吗?
我有一个模型和一个桌子,我不再需要在我的应用程序中,我可以将它们留在那里,但我想删除它们以保持整洁.
我正在试图找出删除它们的最佳方法,而不是弄乱我的迁移和db/schema.rb文件以及它可能对我的生产环境产生的任何副作用,我的应用程序在Heroku上.我在我的本地机器和heroku上使用PostgreSQL.
到目前为止,我已经找到了两种方法,但我不确定哪种方法最好?
我想过要进入我的数据库并丢弃表然后销毁模型.
rails db
DROP TABLE table_name
\q
rails destroy model model_name
Run Code Online (Sandbox Code Playgroud)
如果我这样做,我对此模型/表的迁移会发生什么?我有两个此模型的迁移,一个timestamp_create_modelname和一个add_attribute_to_table名称.
此方法也会更新db/schema.rb文件吗?
当我将应用程序推送到Heroku时,我怀疑模型将被删除但是表格将保留在原位,是否有一个heroku命令来删除表格.
我读到的另一种方法是生成一个新的迁移以删除表然后销毁模型.
rails generate migration drop_tablename
Run Code Online (Sandbox Code Playgroud)
然后更新以下文件:
db/migrate/timestamp_drop_tablename (根据Dan Wich的回答更新)
class DropTablename < ActiveRecord::Migration
def up
drop_table :tablename
end
def down
create_table :tablename do |t|
t.string :table_column
t.references :anothertable
t.timestamps
end
add_index :tablenames, :anothertable_id
end
end
Run Code Online (Sandbox Code Playgroud)
然后在终端:
rake db:migrate
rails destroy model model_name
rake db:migrate
git add .
git commit -m "removed table/model_name"
git …Run Code Online (Sandbox Code Playgroud) 我有以下两种型号:
class Store < ActiveRecord::Base
belongs_to :person
end
class Person < ActiveRecord::Base
has_one :store
end
Run Code Online (Sandbox Code Playgroud)
这是问题所在:我正在尝试创建迁移以在people表中创建外键.但是,引用Store外键的列未命名为store_id,因为它是rails约定,而是命名为foo_bar_store_id.
如果我遵循rails约定,我会像这样进行迁移:
class AddReferencesToPeople < ActiveRecord::Migration
def change
add_reference :people, :store, index: true
end
end
Run Code Online (Sandbox Code Playgroud)
但是这不起作用,因为列名不是store_id,而是foo_bar_store_id.那么我如何指定外键名称只是不同,但仍保持索引:true以保持快速性能?
我创建了一个模型ruby脚本/生成模型文章(简单enuff)
这是迁移文件create_articles.rb:
def self.up
create_table :articles do |t|
t.column :user_id, :integer
t.column :title, :string
t.column :synopsis, :text, :limit => 1000
t.column :body, :text, :limit => 20000
t.column :published, :boolean, :default => false
t.column :created_at, :datetime
t.column :updated_at, :datetime
t.column :published_at, :datetime
t.column :category_id, :integer
end
def self.down
drop_table :articles
end
end
Run Code Online (Sandbox Code Playgroud)
当我运行rake:db migrate命令时,我收到一个错误rake中止!"未初始化的常量CreateArticles."
有谁知道为什么这个错误不断发生?
这个问题源于:如何在创建rails join表之后链接表单
我正在创建产品和类别模型之间的连接表.
连接表应该命名为什么?categories_products或category_products或其他什么?
ruby-on-rails rails-migrations ruby-on-rails-3 ruby-on-rails-3.1
在Rails 2中,删除带有Rails迁移的列还会更改/删除与列关联的索引吗?如果没有,而且您还必须手动更改/删除每个索引,那么它是否应该自动化?
谢谢(来自Rails新手)