问题标签 [rails-migrations]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2275 浏览

ruby-on-rails - 更新功能分支中的迁移时间戳

假设我的主分支 (devlop) 和功能分支都在积极开发。两者都在一次又一次地添加迁移。在将功能分支合并到主分支之前,我将把它变基到主分支上。

因此,只有在最近的开发分支迁移之后才进行所有功能分支迁移才有意义。

是否有一种方便/建议的方法来重命名这些文件?我可以生成虚拟迁移并重用为它们生成的时间戳——但我想知道是否有我不知道的最佳/常见做法?

0 投票
2 回答
560 浏览

ruby-on-rails - Rails 模型关系

各位开发者您好!最近我一直在玩 Rails 3.0,经过相当多的研究,我有点卡住了。我想知道在我的情况下哪种方法或解决方案是最好的(我还没有找到答案)。所以我想要实现的是简单而直接的。

我想做这样的事情:

所以最后我需要有像 User.first.feeds 这样的方法来获取所有用户的提要和 User.first.casts 来通过他/她的提要获取所有用户的演员表。拥有 Feed.first.casts 和 Feed.first.users 也很不错。很简单,对,但我也很难为我想要实现的目标创建迁移。

我知道上面的代码不起作用——我一直在玩它,所以这只是我想要实现的概念。

基本上我的问题是:我应该以某种方式通过连接模型还是使用范围?(你也可以提供一个代码片段)以及我该如何进行迁移?

谢谢,很抱歉,我在网上找不到关于这个简单案例的太多信息。

编辑:用户和 Feed 上的 has_and_belongs_to_many 在我的情况下不起作用,因为它不允许我拥有 @user.casts,它只提供 @user.feeds 和 @feed.users

0 投票
1 回答
55 浏览

ruby-on-rails-3 - 我可以使用 Rails 迁移编辑数据库中的字段吗?

我有一个链接数据库,这些链接都指向特定站点,但该站点上的页面不同。那么网站的域发生了变化,我需要更新我的数据库以反映这种变化。我只需要更改域名,链接的其余部分工作正常。

我的问题是,我可以使用 Rails 迁移来执行此操作吗?要编辑列中的所有字段并更新它们?这会是什么样子?

我知道还有其他方法可以解决它,但我想探索一下我在 Rails 迁移中的选择。

提前致谢!

0 投票
2 回答
1035 浏览

ruby-on-rails - schema.rb 不包括 :unique on add_index

我有以下迁移:

当我运行迁移时,它会在开发数据库中正确创建 UNIQUE 键,但是当我查看时schema.rb, :unique 标志不存在。这导致测试数据库没有唯一索引。

schema.rb 中的结果行如下所示:

我在这里做错了吗?

(Rails 3.0.8,MySql2 gem)

0 投票
5 回答
66085 浏览

ruby-on-rails - 检查Rails中是否存在表

我有一个 rake 任务,除非存在表,否则它将无法工作。我在一个网站上与 20 多名工程师一起工作,所以我想确保他们在执行将填充相应表的 rake 任务之前已经迁移了表。

AR 有没有这样的方法Table.exists?如何确保他们已成功迁移表?

0 投票
3 回答
16015 浏览

ruby-on-rails - 为什么我不能在 Rails 的表中创建一个数组作为列?

为什么我不能这样做:

还有其他方法可以使数组(“苹果”)成为 Fruit 类实例的属性吗?

0 投票
1 回答
2104 浏览

ruby-on-rails - 在一次迁移中创建(删除)多个表

是否可以在一个轨道三个迁移中创建(self.up)多个表。如果这是可能的,那么使用这种方法的传统智慧是什么。有些东西告诉我,每次迁移保留一张桌子会更好,但我只是想我会在栏杆上检查一些更老练的红宝石。

谢谢。

0 投票
1 回答
128 浏览

ruby-on-rails - 将一些硬编码文件更改为活动记录模型的好方法是什么?

现在我的产品模型有一个类别的字符串列,表单有一个选择,它从产品模型的数组中获取它的值。目前只有三种可能的类别:wood_stoves、arborist_gear 和链锯。我有一个控制器,其中每个控制器都列出了各自类别的产品。

我将类别切换到数据库表并使用 has_many 和 belongs_to 关系在其中嵌套产品,这是我的问题。以下是一个坏主意吗?

  1. 为每个 wood_stoves、arborist_gear 和链锯创建一个记录。
  2. 创建一个迁移,将 products/category 列中的每个值转换为新创建的类别记录中的相应记录 id 整数。
  3. 在迁移中添加一个将 category.string 列更改为 category.integer 列的步骤。
  4. 在迁移中添加必要的向下步骤以恢复所有这些。

简而言之,我应该在迁移中执行所有这些操作以使其可逆,还是应该放弃可逆性并手动对数据库进行更改以避免看起来有些荒谬的迁移,该迁移只能反转与原始类别相对应的产品?换句话说,迁移将无法撤消属于新创建类别的产品。

0 投票
2 回答
2350 浏览

ruby-on-rails - Ruby on rails: rake migrate down 似乎不起作用

我生成了一个迁移,它将一个名为 encrypted_pa​​ssword 的列添加到我的数据库中存在的用户表中。这是由 rails 使用以下命令自动生成的:

rails generate migration add_password_to_users encrypted_password:string

我正在尝试删除并重新制作 users_table 中的 encrypted_pa​​ssword 列,所以这就是我正在做的事情:

rake db:migrate:down VERSION=20110712172013(这就是迁移的时间戳) rake db:migrate (我也试过rake db:migrate:redo VERSION=20110712172013

我收到此错误: SQLite3::SQLException: 重复列名: encrypted_pa​​ssword: ALTER TABLE "users" ADD "encrypted_pa​​ssword" varchar(255)

因此,出于某种原因,向下迁移并没有真正删除该列。有人知道为什么吗?

0 投票
4 回答
3212 浏览

ruby-on-rails - Rails 迁移:具有 unsigned int(10) 的主键 ID

我想通过rails迁移在我的表中定义如下主键ID

id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT

我正在使用 mysql 数据库。