问题标签 [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.
xml - 使用 XML 列检索 Rails 3 模型
我有一个 Rails 3 模型,它在数据库 (IBM DB2) 中包含一个 XML 列。每当我尝试通过 以 XML 格式检索此模型时@model.to_xml
,我都会得到 XML 列转义的结果,如下所示:
我想要达到的目标如下:
到目前为止,我尝试了一些不成功的方法,例如取消转义 XML 列并重写to_xml
方法(我不确定如何有效地解析 XML 列)。
有任何想法吗?
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 上的问题报告。
ruby - 如何使用 Ruby on Rails Mustache 从 ActiveModel 预览 HTML
我们正在使用Mustache模板,我想在我们的 RoR Web 应用程序中创建一个预览视图,该应用程序结合了一个模板和我们存储在数据库中的一些数据,但它没有像我预期的那样工作,并且在互联网上进行了一些搜索(包括所以!),我没有找到任何包含活动模型的示例。
如何将 ActiveModel 记录通过管道传输到 Mustache 以与模板合并?
设置:
架构
模型没有什么特别之处。两者都是 ActiveRecord::Base 的子类
控制器
风景
路线
数据
模板(出于示例目的,我已经简化了 html)
结果
期望
我希望有一个简单的答案,我只是想念它。谢谢。
ruby-on-rails - ActiveModel 属性
如何获得 ActiveRecord 属性方法功能?我有这堂课:
我需要做什么,有一个属性方法来列出 PurchaseForm 对象中的所有名称和值?
ruby-on-rails - Rails 3:在哪里存储模型的共享方法?
我有一个方法“random_password”,我希望能够从我的 rails 3 项目中的多个模型中访问它。我只是想知道在哪里存储它以及如何提供对它的访问的约定是什么。任何帮助表示赞赏。
ruby-on-rails - 如何使用多个类别的总和优化 ActiveRecord 查询
楷模:
- 用户 has_many 类别,has_many 条目
- 类别 has_many 条目
- 条目属于类别和用户
让我们假设,条目上有一个名称和一个数量。如果我有一个视图需要为特定用户显示特定月份(现在让我们以 created_at 为例),并希望显示一个表格,其中包含按类别分组的特定月份中的所有条目(不显示空类别)和总和和类别中的条目数。
我的问题是:查询数据库(并充分利用缓存)的最有效方法是什么?此视图将经常呈现,并且每次用户创建新条目时,自然会更改一个类别的总和,但不会更改其他类别的总和。
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 模块。
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 问题。
ruby-on-rails-3 - Rails:我应该如何在父回调之前运行关联对象的回调?
我有一个Invoice
模型,它has_many :line_items
。
两种模型都有before_validation
回调。发票的回调要求首先运行行项目的回调。但是,默认情况下,发票的回调会运行,然后每个行项目的回调都会运行。
有没有一种好方法可以确保先验证行项目,然后验证发票?
目前,我正在玩弄这样的东西:
有没有更好的方法来处理这个?
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 还是很陌生。