Tag: 迁移

迁移正在等待中

我正在尝试为我的应用程序中的用户进行validation,但每次我尝试迁移某些内容或运行rake测试时,它总是会给我这个错误:rake aborted! ActiveRecord的:: PendingMigrationError: 迁移正在等待中。 要解决此问题,请运行: bin/rake db:migrate RAILS_ENV=test 然后,当我运行命令“bin / rake db:migrate RAILS_ENV = test”时,它表示权限被拒绝。 有人可以帮帮我吗! (我正在使用cloud9并遵循当前第6章的Mhartl指南)

Ruby on Rails中的一次更改模型属性(列名)

我创建了一个具有属性“name”的模型,但我想将其更改为“username”。 我读过的关于数据库迁移的所有内容都涉及创建一个类或一些复杂的东西。 我想要做的只是SQL中的“UPDATE TABLE”。 如何运行一次性数据库迁移来更改此设置? 我猜它涉及rails控制台,然后是一些命令?

user first_name last_name字段用于创建full_name字段

我的rails中有我的模型中当前表示的first_name和last_name字段。 我想在我的数据库中添加另一个名为full_name字段,并想知道无缝地执行此操作的最佳方法是什么。 请注意,我还有一个生产服务器,并希望这样做,以便我不仅在迁移中添加一列,而且还可以使用现有数据填充新字段。 编辑: 这是我的控制器 def followers @title = “Followers” @user = User.find(params[:id]) @users = @user.followers.paginate(page: params[:page]) @followers = @user.followers.find(:all, :select => ‘users.id, users.first_name, users.last_name’, :conditions => [“users.first_name like ?”,”%” + params[:q] + “%”]) respond_to do |format| format.html {render ‘show_follow’} format.json {render :json => @followers} end end 我希望能够1. select: ‘users.id, users.full_name和select: ‘users.id, users.full_name :condition =>[“users.full_name […]

Ruby / Rails – 反向迁移 – DDL到Ruby代码

Ruby或Rails中的任何工具都允许我从数据库中提取所有表模式并生成Ruby等效的“DLL”语句? 允许我将模式从Microsoft SQL Server移植到Postgres,或从MySQL移植到Sqlite的东西。

如何将字符串列更改为bigint?

在rails迁移中。 如何将字符串类型列更改为bigint? 我有: t.change :ip_number_from, :integer, :limit => 8 我明白了: PG::Error: ERROR: column “ip_number_from” cannot be cast to type bigint 我甚至尝试了两种选择: change_column :ip_to_countries, :ip_number_from, :integer, :limit => 8 change_column :ip_to_countries, :ip_number_from, :bigint 还是一样的错误。

rails通过迁移删除旧模型

我有一堆rails模型,我正在重写为单个模型,以简化我的代码并减少不必要的表。 我想知道删除模型类及其表的最佳方法是什么。 我希望过去的迁移仍能成功,但我不想让空模型四处闲置。 我是否必须手动删除引用这些模型的旧迁移,然后手动删除类文件? 有没有人有最好的方法来做到这一点?

Rails唯一性约束和匹配空列的db唯一索引

我的迁移文件中有以下内容 def self.up create_table :payment_agreements do |t| t.boolean :automatic, :default => true, :null => false t.string :payment_trigger_on_order t.references :supplier t.references :seller t.references :product t.timestamps end end 我想确保如果指定了product_id它是唯一的但我也想允许null所以我在我的模型中有以下内容: validates :product_id, :uniqueness => true, :allow_nil => true 工作得很好,但我应该为迁移文件添加一个索引 add_index :payment_agreements, :product_id, :unique => true 显然,当为product_id插入两个空值时,这将抛出exception。 我可以简单地省略迁移中的索引,但是我有可能得到两个PaymentAgreements,其中包含相同的product_id: 并发性和完整性 我的问题是处理这个问题的最佳/最常用方法是什么

Rails:无法在迁移中添加:precision或:scale选项和change_column?

这似乎在之前被问过: rails decimal precision和scale 但是当为:precision或:scale运行change_column迁移时,它们实际上不会影响架构或数据库,但db:migrate运行时没有错误。 我的迁移文件如下所示: class ChangePrecisionAndScaleOfPaybackPeriodInTags 3, :precision => 10 } end def self.down change_column :tags, :payback_period, :decimal end end 但我的架构(和数据)仍然如下: t.decimal “payback_period” 别人有这个问题吗? 谢谢, 玩笑

Rails和Postgres Hstore:你能在迁移中添加索引吗?

我有一个迁移,我创建了一个像这样的产品表 class CreateProducts < ActiveRecord::Migration def change create_table :products do |t| t.string :name t.hstore :data t.timestamps end end end 在activerecord-postgres-hstore页面上,他们为表添加一个索引(在SQL中) CREATE INDEX products_gin_data ON products USING GIN(data); 然而,迁移不会跟踪这种变化(我猜是因为它是Postgres特定的?),有没有办法从迁移中创建索引? 谢谢!

“扁平化”Rails迁移的方法?

我正在努力部署我的第一个Rails应用程序,在此过程中的某个地方,我拙劣地进行了迁移。 当我尝试将我的应用程序推送到生产服务器并运行rake db:migrate ,它会因某个错误而失败。 现在,我懒得单独完成我的迁移工作以找出问题所在,所以我试图避免这样做。 鉴于我当前的开发数据库运行良好,有没有办法将当前架构“扁平化”为单一,全面的迁移? 我知道这很草率,我知道我可能做了一个愚蠢的事情,首先打破了迁移链。 (我可能直接在某个地方编辑了数据库模式,我现在明白这是禁止的。)这是一个非常小的项目,我基本上是唯一的开发人员,所以我很舒服在地毯下扫描这个问题如果可能的话。 有没有办法做到这一点? 感谢您提供专业知识。