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

ruby-on-rails - Rails :include 与 :joins

这更像是一个“为什么事情会这样工作”的问题,而不是一个“我不知道该怎么做”的问题......

因此,拉取您知道将要使用的关联记录的福音是使用,:include因为您将获得一个连接并避免一大堆额外的查询:

但是,当您查看日志时,没有发生连接:

正在走捷径,因为它一次提取所有评论,但它仍然不是连接(所有文档似乎都这么说)。我可以加入的唯一方法是使用:joins而不是:include

日志显示:

我错过了什么吗?我有一个包含六个关联的应用程序,并且在一个屏幕上显示来自所有关联的数据。似乎最好有一个加入查询而不是 6 个个人。我知道从性能方面来说,进行联接而不是单独查询并不总是更好(实际上,如果您按时间计算,看起来上面的两个单独查询比联接要快),但毕竟文档我一直在阅读我很惊讶地看到:include没有像宣传的那样工作。

也许 Rails意识到性能问题并且在某些情况下不加入?

0 投票
4 回答
99606 浏览

ruby-on-rails - 如何跳过 ActiveRecord 回调?

可能重复:
如何避免运行 ActiveRecord 回调?

我有这样的模型

是否有可能以某种方式强制模型add_points_to_user在保存时跳过调用?可能类似于ActiveRecord#deletevs ActiveRecord#destroy

0 投票
2 回答
12994 浏览

ruby-on-rails - 如何在 Rails 中将数据库字段设为只读?

我有一个带有某个字段的数据库表,一旦将其插入数据库,就应该无法更新。我如何告诉我的模型它不应该允许更新某个字段?

0 投票
13 回答
77921 浏览

ruby-on-rails - Rails:从 Ruby on Rails 的模型中访问 c​​urrent_user

我需要在 Ruby on Rails 应用程序中实现细粒度的访问控制。单个用户的权限保存在数据库表中,我认为最好让各自的资源(即模型的实例)决定是否允许某个用户读取或写入它。每次在控制器中做出这个决定肯定不会很干。
问题是,为了做到这一点,模型需要访问当前用户,才能调用类似. 但是,模型通常无法访问会话数据。 may_read?(current_user, attribute_name)

有很多建议可以在当前线程中保存对当前用户的引用,例如在 这篇博文中。这肯定会解决问题。

相邻的 Google 结果建议我在 User 类中保存对当前用户的引用,我猜这是由应用程序不必同时容纳大量用户的人想到的。;)

长话短说,我觉得我希望从模型中访问当前用户(即会话数据)来自我做错了

你能告诉我我怎么错了吗?

0 投票
2 回答
237 浏览

ruby-on-rails - 危险的 ActiveRecord 行为?

我有一个带有投票方法的Post类,它创建了一个Vote实例

这不起作用

这确实有效

.create调用不应该自动添加 :post 关联吗?

澄清

类 Post < ActiveRecord::Base has_many :votes end

类投票 < ActiveRecord::Base belongs_to :user, :counter_cache => true belongs_to :post end

0 投票
4 回答
3760 浏览

ruby-on-rails - Rails 应用程序中的计算逻辑应该放在哪里?

我有一个模拟房屋的应用程序。House has_many Rooms、Rooms has_many Lights 和 Small_appliances 等。我还有一个名为 Calculator 的控制器,用于访问应用程序。使用计算器控制器将数据添加到房屋(及其房间)。然后生成一个报告,该报告位于 app/views/calculator/report.html.erb。

我的问题是报告的所有计算和逻辑应该去哪里?目前我已经在视图中,在calculator_helper 中有一些东西。通常这会出现在模型中,对吧?但是计算器没有生成的模型。这个的标准是什么?

这是计算器控制器。

0 投票
2 回答
6044 浏览

ruby-on-rails - has_and_belongs_to_many 关联的排序

在我的 Rails 应用程序中,我有两个与 has_and_belongs_to_many 相关的模型。这意味着有一个连接表。

想象一下我将用户添加到游戏中的场景。如果我想添加一个用户,我会:

假设我想知道添加这些用户的顺序。我可以做这个:

我的问题是:

  1. 如果此列表保证每次都以相同的方式读取,则排序是否?

  2. 如果是这样,在游戏中重新排序用户的干净方法是什么?

0 投票
2 回答
374 浏览

ruby-on-rails - 无法开始使用 Ruby on Rails

我想知道是否有人可以解决我遇到的一些问题?我创建了一个 Rails 应用程序:

然后我想用一个mysql客户端来创建表。让我们说用户和客户。客户也是用户,因此您具有如下架构:

我需要运行哪些 Rails 脚本命令才能在我的 Rails 应用程序下创建并完全填写模型、视图和控制器?我试过这个:

创建文件但模型为空:

这是怎么回事?另外,我想创建一个管理部分来管理东西。我发现我需要为这些添加路线:

我还需要什么才能让管理部分正常运行?这里还有我正在运行的 ruby​​/gems 版本:

0 投票
1 回答
22400 浏览

ruby-on-rails - Ruby ActiveRecord 模型中的级联删除?

我正在关注 ruby​​onrails.org 上的截屏视频(创建博客)。

我有以下型号:

评论.rb

post.rb

模型之间的关系工作正常,除了一件事 - 当我删除帖子记录时,我希望 RoR 删除所有相关的评论记录。我知道 ActiveRecords 是独立于数据库的,所以没有内置的方法来创建外键、关系、ON DELETE、ON UPDATE 语句。那么,有什么办法可以做到这一点(也许 RoR 本身可以负责删除相关评论?)?

0 投票
7 回答
9322 浏览

ruby-on-rails - 通俗地说,Ruby on Rails ORM 是什么?请解释

我无法理解 Ruby on Rails 中的 ORM。据我了解,表/列和对象/属性之间存在 1:1 的关系。所以每条记录都是一个对象。还有什么是模型?我知道它映射到一张桌子。

我真正追求的是对上述内容的更深入理解。预先感谢您的帮助

我是一名从 PHP 转向 Ruby on Rails 的 Web 开发人员。