问题标签 [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 投票
2 回答
4588 浏览

ruby-on-rails - Rails:模型实例方法还是辅助方法?

按照惯例,应该将以下内容定义为我的模型的实例方法还是辅助方法?

或者

非常感谢。

0 投票
1 回答
15068 浏览

ruby-on-rails - rename_column 是否处理索引?

说,我们有这样的事情:

然后我们做

ActiveRecord 和/或数据库是否也会处理索引的重命名,还是我必须手动删除索引并再次添加它?

0 投票
4 回答
160470 浏览

ruby-on-rails - Rails update_attributes 没有保存?

update_attributes有没有不保存记录的替代方法?

所以我可以做类似的事情:

顺便说一句,我知道我可以@car.model = 'Sierra',但我想在一行上更新它们。

0 投票
4 回答
5731 浏览

ruby-on-rails - 在 Rails 中清理迁移的好方法是什么?

所以我已经在这个网络应用程序上工作了一年,我想将架构编译到 ONE 迁移中,这样我的文本编辑器加载速度更快,git 工作目录不会那么混乱。

搜索查找会更快。

我的任何配置/数据库都不会长 4000 像素。

0 投票
2 回答
1149 浏览

mysql - 带有 MYSQL 后端的 Ruby on Rails 中虚拟属性和实例属性之间的区别

我讨厌问这样一个新手问题,但我确信我做的事情根本上是错误的,而且我很难找到其他同样一无所知的人。

我的 MCMPART 模型的新视图要求用户输入零件的 :length 和 :width 值。从这些值中,我想推导出 :squarefeet (:length * :width/144) 和钣金 :shearsize (:length X :width)。为此,我将模型修改如下:

控制器只是通用脚手架,但这里是创建方法:

为了明确模型的构建,这里是数据库迁移文件:

我相信有人会马上发现我的问题。这正在创建一个虚拟属性,该属性仅在我的 SHOW 视图中显示。但是,我想要的是将 :shearsize 和 :squarefeet 参数添加到我的数据库中。相反,我在我的数据库中得到了两个属性的 nil 值。而且由于它不是我需要的实例属性,它不受我数据库中设置的精度/比例值的约束,因此在小数点后显示多达 8 位数字。

我需要在控制器中做些什么吗?我试图用@mcmpart.shearsize 替换self.shearsize,但这只会导致我的页面失败。

感谢第一个指出我的菜鸟错误的人。

谢谢,

0 投票
4 回答
10513 浏览

ruby-on-rails - 使用活动记录按月和日查找记录,忽略年份和时间

我有一个模型(条目),有五年的记录(每天一条记录)。我需要一种方法,当2011-12-25 00:00:00传递一个日期对象(例如:created_at

RoR 3.0.9 / 红宝石 1.9.2p290

0 投票
1 回答
1299 浏览

ruby-on-rails - Ruby on Rails 3 - 从另一个模型创建一个模型的实例

我有以下问题,但首先我会做一些假设

  1. 这个例子只是为了简单地解释我的问题
  2. 表模型不相关

我有两个表(模型)用户和电子邮件

用户

  • ID
  • 姓名
  • 电子邮件

电子邮件

  • ID
  • 帐户

所以,我的想法是每次创建用户时,我都想创建一个电子邮件实例,其中 Emails.account = Users.email

我尝试使用回调

但它没有用。

还有另一种方法可以实现这一目标吗?

0 投票
5 回答
12178 浏览

ruby-on-rails - 验证和更新单个属性栏

我的用户模型中有以下内容

在我的一个控制器中,我只想更新和验证头像字段而不更新和验证电子邮件

我怎样才能做到这一点?

例如(这不起作用)

我也尝试过update_attribute('avatar', params[:user][:avatar]),但这也会跳过对头像字段的验证。

0 投票
1 回答
1104 浏览

ruby-on-rails - Rails 控制器模型命名约定问题

我是 Ruby on Rails 的新手,正在尝试设置基于 oracle 的 ROR 应用程序,

数据库表名是booker.live_edi_vendors

我在以下路径中定义了我的控制器:

内容是:

我还为此控制器创建了一个视图,该视图位于../rails-root/app/views/live_edi_vendors文件夹中。

index.html.erb在这个目录中放了一些代码。

现在,我的模型文件是../rails-root/app/model/live_edi_vendors.rb

这个文件中的内容是:

现在,

当我试图<website host>/live_edi_vendors从浏览器访问路径时,它说

我的routes.rb文件有以下行来路由请求:

请帮帮我,这些天我一直在为这些命名约定而苦苦挣扎。

我还将我的目录结构放在这里:

谢谢,

0 投票
2 回答
2432 浏览

ruby-on-rails - ActiveRecord 查询链

这个 ruby​​/rails 构造总是让我感到困惑:

这必须从左到右执行,以便每个连续的调用都有一个接收器。所以我们从 User 类开始,调用where它返回一个ActiveRecord::Relation. 然后limit在该实例上调用,返回ActiveRecord::Relation. 然后using在该实例上调用(恰好选择了一个分片)。ActiveRecord::Relation我猜,整个事情在对象内部建立了一个 SQL 查询。我的问题是,“是什么触发了查询的实际执行”?它不能在链中的任何特定点执行,因为链中可能存在进一步修改查询的后继者。即使using返回,查询仍然无法执行,因为它不知道是否有附加方法附加到链上。显然,它确实在构建后执行查询,那么查询实际上是如何调用的呢?


谢谢...我现在看到链中方法的名称具有“语义”。有些人会进一步修改正在构建的查询。最后一个也是唯一的最后一个可能是需要获取数据的类型。