Tag: 迁移

Rails迁移:仅用于架构更改或更新数据?

我是初级Rails开发人员,在工作中我们面临以下问题: 只需为一条记录更新列的值。 我们所做的是创建这样的迁移: class DisableAccessForUser < ActiveRecord::Migration def change User.where(name: "User").first.update_column(:access, false) end end 迁移仅适用于架构更改吗? 您还建议其他什么解决方案? PS:我只能用代码更改它。 无法访问控制台。

数据库特定迁移代码

我正在创建一个需要在多个数据库下运行的应用程序。 我目前在迁移中有一些代码,我只想在特定的数据库(postgresql和mysql)下运行。 有任何设置方法吗? 谢谢。

在Ruby on Rails中自动增加非主键字段

在RoR迁移中,如何自动增加非主键字段? 我想在db定义中执行此操作,而不是在模型中执行此操作。

rake db:migrate生成“rake aborted! 找不到表“错误

我是Rails的新手,我正在为我的雇主构建一个简单的项目跟踪应用程序。 我一直在我的Mac上开发应用程序并将其推送到github。 我只是设法将我的github repo克隆到我公司防火墙后面的一个Windows框中,希望让同事们试用这个应用程序。 但是当我去rake db:migrate来初始化windows框中的数据库时,我收到以下错误消息: $ rake db:migrate –trace ** Invoke db:migrate (first_time) ** Invoke environment (first_time) ** Execute environment rake aborted! Could not find table ‘projects’ c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_reco rd/connection_adapters/sqlite3_adapter.rb:29:in `table_structure’ c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/faker-0.3.1/lib/extensions/object. rb:3:in `returning’ c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_reco rd/connection_adapters/sqlite3_adapter.rb:28:in `table_structure’ c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_reco rd/connection_adapters/sqlite_adapter.rb:228:in `columns’ c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_reco rd/base.rb:1271:in `columns’ c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_reco rd/base.rb:1279:in `columns_hash’ c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_reco rd/base.rb:1578:in `find_one’ c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_reco rd/base.rb:1569:in `find_from_ids’ c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_reco rd/base.rb:616:in `find’ […]

如何通过rails迁移设置Postgres中主键(ID)列的起始点

我正在将一个rails应用程序部署到heroku,后者使用PostgreSQL作为后端。 在我的数据库迁移中,我通常会将报告等内容的ID字段设置为至少1000,大多数客户似乎不喜欢从1开始。 通常我使用mysql,我只是在创建表后添加一个特定的sql: def self.up create_table :reports do |t| t.references :something … end execute(“ALTER TABLE reports AUTO_INCREMENT = 1000;”) end 有没有人知道如何为PostgreSQL实现同样的目标,理想情况下我希望迁移来构建表本身,这样就不是特定于DB的。 我想实现我的目标的一个愚蠢的方法是在循环中创建和删除999条记录,哎哟。

解决Rails孤立迁移的最佳方法是什么?

我一直在项目中的分支之间切换,每个分支都有不同的迁移…这是场景: $ rake db:migrate:status Status Migration ID Migration Name ————————————————– … up 20130307154128 Change columns in traffic capture up 20130311155109 Remove log settings up 20130311160901 Remove log alarm table up 20130320144219 ********** NO FILE ********** up 20130320161939 ********** NO FILE ********** up 20130320184628 ********** NO FILE ********** up 20130322004817 Add replicate to root settings up […]

如何在rails中编写条件迁移?

我正在寻找在rails中编写迁移的方法,可以多次对数据库执行而不会失败。 比如说我有这个迁移: class AddUrlToProfile < ActiveRecord::Migration def self.up add_column :profile, :url, :string end def self.down remove_column :profile, :url end end 如果url列已存在于Profile表中(例如,如果schema.rb已被意外修改),我的迁移将失败,说它是重复的! 那么如果必须执行此迁移呢? 谢谢

rails3 default_scope,以及迁移中的默认列值

class CreateCrews false t.timestamps end end def self.down drop_table :crews end end class Crew :crew_users belongs_to :user default_scope where(:approved => true) end 当我进入控制台并创建新记录时,“已批准”属性设置为true,为什么? 如何将其自动设置为默认值(false),如我的迁移文件中所示? wojciech@vostro:~/work/ze$ rails console Loading development environment (Rails 3.0.0) ruby-1.9.2-p0 > c = Crew.new => #

Rails:’schema.rb’中的版本号是否用于任何东西?

既然Rails已经对时间戳进行了迁移 ,那么/db/schema.rb顶部的单个版本号似乎毫无意义。 在处理多个开发人员或多个分支时,有时版本号最终不正确。 Rails是否甚至利用了:version参数? 它是否有任何不正确的错误(如:它不反映最近应用的提交的时间戳)? 例: ActiveRecord::Schema.define(:version => 20100417022947) do # schema definition … end

如何在environment.rb中检测我的rails是否在迁移中运行

任何简单的方法来检测它? 我想在进行迁移rake时跳过envirmonment.rb中的一些代码。