问题标签 [rails-activerecord]

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 投票
6 回答
11329 浏览

ruby-on-rails - 有没有办法将命名范围组合成一个新的命名范围?

我有

我想要

但我更喜欢以干燥的方式来做。我可以通过使用获得相同的效果

但它不是特别可爱。

0 投票
12 回答
212094 浏览

ruby-on-rails - 复制 activerecord 记录的最简单方法是什么?

我想复制一个 ActiveRecord 对象,更改过程中的单个字段(除了id)。完成此任务的最简单方法是什么?

我意识到我可以创建一个新记录,然后遍历每个字段,逐个字段地复制数据 - 但我认为必须有一种更简单的方法来做到这一点。

也许是这样的:

0 投票
29 回答
218066 浏览

ruby-on-rails - Rails:如何在 ActiveRecord 中设置默认值?

如何在 ActiveRecord 中设置默认值?

我看到 Pratik 的一篇文章描述了一段丑陋、复杂的代码: http: //m.onkey.org/2007/7/24/how-to-set-default-values-in-your-model

我已经看到以下示例在谷歌搜索:

我也看到人们把它放在他们的迁移中,但我宁愿看到它在模型代码中定义。

是否有规范的方法来为 ActiveRecord 模型中的字段设置默认值?

0 投票
5 回答
143959 浏览

ruby-on-rails - 你如何编写一个迁移来重命名一个 ActiveRecord 模型及其在 Rails 中的表?

我不擅长命名,并意识到在我的 Rails 应用程序中有一组更好的模型名称。
有没有办法使用迁移来重命名模型及其对应的表?

0 投票
5 回答
4479 浏览

ruby-on-rails - Ruby Object#id 警告和 Active Record

当我们运行我们的规范时,我们不断看到如下警告:

Object#id 将被弃用;使用对象#object_id

有问题的代码正在访问 ActiveRecord 模型的 id(显然,这是表上的一个属性,而不是 Ruby VM 中的对象实例 ID)。

有谁知道如何关闭这些特定警告或以某种方式避免它们?

0 投票
28 回答
119237 浏览

ruby-on-rails - 如何避免运行 ActiveRecord 回调?

我有一些具有 after_save 回调的模型。通常这很好,但在某些情况下,例如在创建开发数据时,我想保存模型而不运行回调。有没有一种简单的方法可以做到这一点?类似于...的东西

或者

我查看了 Rails 文档并没有找到任何东西。然而,根据我的经验,Rails 文档并不总是能说出整个故事。

更新

我发现一篇博客文章解释了如何从这样的模型中删除回调:

我找不到该方法的记录位置,但它似乎有效。

0 投票
9 回答
39185 浏览

mysql - 回滚失败的 Rails 迁移

如何回滚失败的 Rails 迁移?我希望这rake db:rollback会撤消失败的迁移,但是不,它会回滚先前的迁移(失败的迁移减去一)。而且rake db:migrate:down VERSION=myfailedmigration也不行。我遇到过几次,这非常令人沮丧。这是我为复制问题所做的一个简单测试:

结果:

好的,让我们回滚:

嗯?那是我在 SimpleTest 之前的最后一次迁移,而不是失败的迁移。(哦,如果迁移输出包含版本号,那就太好了。)

因此,让我们尝试为失败的迁移 SimpleTest 运行 down:

什么也没有发生,也没有输出。但也许它还是运行了迁移?因此,让我们修复 SimpleTest 迁移中的语法错误,并尝试再次运行它。

没有。显然 migrate:down 没有用。它没有失败,它只是没有执行。

除了手动进入数据库并删除它,然后运行测试之外,没有办法摆脱那个重复的表。一定有比这更好的方法。

0 投票
10 回答
21902 浏览

ruby-on-rails - 按指定顺序按 id 查找 ActiveRecord 对象的干净方法

我想获得一个给定 id 数组的 ActiveRecord 对象数组。

我以为

将返回一个包含对象 5、对象 2、然后是对象 3 的数组,但我得到的数组顺序为对象 2、对象 3 和对象 5。

ActiveRecord Base find 方法 API提到您不应该按提供的顺序期望它(其他文档没有给出此警告)。

一个潜在的解决方案是在Find by ids array 中以相同的顺序给出的?,但 order 选项似乎对 SQLite 无效。

我可以编写一些 ruby​​ 代码来自己对对象进行排序(有点简单且缩放效果不佳或更好缩放且更复杂),但是有更好的方法吗?

0 投票
5 回答
297406 浏览

ruby-on-rails - 如何获取 Ruby 类的名称?

如何从 ActiveRecord 对象中获取类名?

我有:

我试过:

我只需要字符串中的类名(User在这种情况下)。有没有办法呢?

我知道这是非常基本的,但我搜索了 Rails 和 Ruby 的文档,但找不到。

0 投票
2 回答
1108 浏览

ruby-on-rails - 诊断 Rails 应用程序在元素更新时挂起

在构建 Rails 应用程序以帮助小型酒店管理预订的过程中,我遇到了一个奇怪的应用程序挂起。建立预订工作正常;添加客人,将他们分配到房间等,没有问题。然而,当商人去“确认”询问时,Mongrel 把我挂在外面晾干。

预订的索引页面列出了当前的查询和已确认的预订:

在保留部分本身中,调用确认/取消确认逻辑的位只是与控制器操作的直接链接:

确认预订的控制器操作(映射到我的路线中的 PUT)如下所示:

'@reservation.save' 是诀窍。每次都有明确的应用程序挂起。

有人可以帮助我了解这里发生了什么吗?

/更新:

通过使用控制台,我能够以另一种方式演示该问题:

请注意,控制台也被锁定,我不得不中止保存!使用 Ctrl-C 命令。

为什么世界上会保存!正在这样做吗?

/更新:

知道了!!!它在我的模型中。我试图验证一个关联,但我已经得到了 has_many/belongs_to 的东西。

谢谢大家!