问题标签 [activemodel]

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 回答
419 浏览

xml - 使用 XML 列检索 Rails 3 模型

我有一个 Rails 3 模型,它在数据库 (IBM DB2) 中包含一个 XML 列。每当我尝试通过 以 XML 格式检索此模型时@model.to_xml,我都会得到 XML 列转义的结果,如下所示:

我想要达到的目标如下:

到目前为止,我尝试了一些不成功的方法,例如取消转义 XML 列并重写to_xml方法(我不确定如何有效地解析 XML 列)。

有任何想法吗?

0 投票
2 回答
1825 浏览

ruby-on-rails-3 - Rails 3,RSpec 2.5:使用带有命名范围的 should_receive 或 stub_chain

我使用 Rails 3.0.4 和 RSpec 2.5。在我的控制器中,我大量使用命名范围,例如

在我的测试中,我希望能够模拟这样一个查询的结果,而不是措辞。我认为做类似的事情没有意义

因为当我决定重新排序命名范围时,此测试将失败。

使用 Rails 2.3 和 RSpec 1.x,这工作得很好:我可以写

并且上述调用将被捕获并正确处理。然而,在 Rails 3 中,由于某种原因,这不再起作用。

为什么?如何对嵌套范围的结果设置期望值或存根?由于 Rails 3 的 ActiveModel 中的所有内容都是一个命名范围(感谢 ARel),因此这必须以某种方式实现,否则测试确实会非常脆弱。

谢谢!

更新:另见GitHub 上的问题报告

0 投票
1 回答
2380 浏览

ruby - 如何使用 Ruby on Rails Mustache 从 ActiveModel 预览 HTML

我们正在使用Mustache模板,我想在我们的 RoR Web 应用程序中创建一个预览视图,该应用程序结合了一个模板和我们存储在数据库中的一些数据,但它没有像我预期的那样工作,并且在互联网上进行了一些搜索(包括所以!),我没有找到任何包含活动模型的示例。

如何将 ActiveModel 记录通过管道传输到 Mustache 以与模板合并?

设置:

架构

模型没有什么特别之处。两者都是 ActiveRecord::Base 的子类

控制器

风景

路线

数据

模板(出于示例目的,我已经简化了 html)

结果

期望

我希望有一个简单的答案,我只是想念它。谢谢。

0 投票
5 回答
12875 浏览

ruby-on-rails - ActiveModel 属性

如何获得 ActiveRecord 属性方法功能?我有这堂课:

我需要做什么,有一个属性方法来列出 PurchaseForm 对象中的所有名称和值?

0 投票
1 回答
356 浏览

ruby-on-rails - Rails 3:在哪里存储模型的共享方法?

我有一个方法“random_password”,我希望能够从我的 rails 3 项目中的多个模型中访问它。我只是想知道在哪里存储它以及如何提供对它的访问的约定是什么。任何帮助表示赞赏。

0 投票
2 回答
748 浏览

ruby-on-rails - 如何使用多个类别的总和优化 ActiveRecord 查询

楷模:

  • 用户 has_many 类别,has_many 条目
  • 类别 has_many 条目
  • 条目属于类别和用户

让我们假设,条目上有一个名称和一个数量。如果我有一个视图需要为特定用户显示特定月份(现在让我们以 created_at 为例),并希望显示一个表格,其中包含按类别分组的特定月份中的所有条目(不显示空类别)和总和和类别中的条目数。

我的问题是:查询数据库(并充分利用缓存)的最有效方法是什么?此视图将经常呈现,并且每次用户创建新条目时,自然会更改一个类别的总和,但不会更改其他类别的总和。

0 投票
4 回答
9708 浏览

ruby-on-rails-3 - 在 Rails 的 ActiveRecord 对象中跟踪未持久属性的脏

我有一个从 ActiveRecord 继承的对象,但它有一个未保存在数据库中的属性,例如:

我希望能够使用 ActiveModel Dirty 提供的“bar_changed?”等方法跟踪对“bar”的更改。问题是,当我尝试在此对象上实现 Dirty 时,如文档中所述,我收到错误,因为 ActiveRecord 和 ActiveModel 都已定义define_attribute_methods,但参数数量不同,因此尝试时出现错误调用define_attribute_methods [:bar].

我在 includedefine_attribute_methods之前尝试过别名ActiveModel::Dirty,但没有运气:我得到一个未定义的方法错误。

关于如何处理这个问题的任何想法?当然,我可以手动编写所需的方法,但我想知道是否可以通过将 ActiveModel 功能扩展到 ActiveRecord 未处理的属性来使用 Rails 模块。

0 投票
3 回答
2388 浏览

ruby-on-rails - Rails 3 表单错误:“未定义的方法 `quoted_table_name'”

我有一个具有一组嵌套属性的 Rails 3 表单(实际上是 simple_form):

问题是 :credit_card 属性属于 CreditCard 类,它不是模型,因为我没有在数据库中存储任何信用卡数据。我在 /app/models/credit_card.rb 中定义了这个类(根据这个 RailsCast):

在 user.rb 中,我有这个:

当我访问该页面时,我收到此错误:

谷歌搜索该错误没有产生任何建议。我可以从 Rails 控制台创建 CreditCard 对象,但由于某种原因,Rails 表单生成器没有看到该类。

我已经尝试用 form_for 替换 simple_form_for (以及相关的更改),所以我认为这不是 simple_form 问题。

0 投票
1 回答
116 浏览

ruby-on-rails-3 - Rails:我应该如何在父回调之前运行关联对象的回调?

我有一个Invoice模型,它has_many :line_items

两种模型都有before_validation回调。发票的回调要求首先运行行项目的回调。但是,默认情况下,发票的回调会运行,然后每个行项目的回调都会运行。

有没有一种好方法可以确保先验证行项目,然后验证发票?

目前,我正在玩弄这样的东西:

有没有更好的方法来处理这个?

0 投票
2 回答
2385 浏览

ruby-on-rails - Rails 3:显示表单的验证错误(不保存 ActiveRecord 模型)

如果这是一个非常常见和/或荒谬的问题,我们深表歉意;我发誓我已经多次阅读文档,所有内容似乎都如此专注于 ActiveRecord,以至于他们已经偏离了创建或编辑模型数据之外的表单路径。

以带有输入的表单为例,以控制某些统计数据的提取和显示。Rails 为我提供了什么来验证此表单的用户输入,它不会save在任何记录上调用?像:

  • :email必须是电子邮件地址
  • :num_products必须是正整数
  • :gender必须是“M”或“F”之一
  • :temperature必须在 -10 到 120 之间

等等(大多数网络框架中标准的那种东西)......

Rails 中有什么东西可以让我执行这个任意验证,还有一些视图助手来显示错误列表,还是所有东西都与 ActiveRecord 相结合?

如果我在文档中忽略了这一点,我深表歉意,但是并没有真正涵盖它,至少就 mt 疲倦的眼睛所能看出的而言。

抓头

感谢 Rob 的回答,这就是我想出的。我创建了一个实用程序类(恰当地命名为Validator),它只是嵌入到我的控制器中,用于任何需要它的东西。

现在在控制器中,例如,只需定义一个小内联类:

.rb恕我直言,当逻辑更面向控制器时,将每一组验证规则都放在自己的位置上感觉有点不必要。可能有一种更简洁的方式来写这个,但我对 Ruby 和 Rails 还是很陌生。