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

ruby-on-rails - Rails 3:检查嵌套属性是否已更改?

只是想知道 Rails 中是否有一种方法可以识别保存表单时嵌套属性是否已更改?

例如:我有一个名为“shop”的模型,其中包含用于交付区域的嵌套复选框。

每次“商店”发生变化时,我都想知道那些嵌套的“送货区域”属性是否发生了变化。有任何想法吗?

0 投票
2 回答
325 浏览

ruby-on-rails - 具有类型和转换的结构

我正在尝试在 Ruby 中完成以下任务:

我希望它同时接受:

也就是说,我希望它自动进行数据转换。

我知道 Ruby 是动态的,我不应该关心数据类型,但这种转换会很方便。

我要问的是类似于 ActiveRecord 已经做过的事情:将字符串转换为表列中定义的数据类型。

在搜索 ActiveModel 后,我无法弄清楚如何对一些进行此转换的 TableLess。

毕竟我认为我的问题可能需要 ActiveModel 模块提供的更少。

当然,我可以自己实现一个提供此转换功能的类,但我宁愿知道这还没有完成,以免重新发明轮子。

提前谢谢。

0 投票
1 回答
7431 浏览

ruby-on-rails - 如何将参数传递给Rails中的委托方法

我想要一个仪表板来显示多个模型的摘要,并且我使用 Presenter 实现了它,而没有它自己的数据。我使用一个 ActiveModel 类(没有数据表):

通过代表,我希望能够打电话Dashboard.address回来Account.find_by_user_id(Dashboard.user_id).address

如果 Dashboard 是一个 ActiveRecord 类,那么我可以声明Dashboard#belongs_to :account并且委托会自动工作(即,Account 会知道它应该从具有user_id等于to user_idDashboard 实例的帐户返回地址属性)。

但是 Dashboard 不是 ActiveRecord 类,所以我不能声明belongs_to. 我需要另一种方法来告诉 Account 查找正确的记录。

有没有办法克服这个问题?(我知道我可以伪造 Dashboard 以获得一个空表,或者我可以将 User 的实例方法重写为带参数的类方法。但这些解决方案都是 hack)。

谢谢你。

0 投票
2 回答
803 浏览

ruby - ActiveModel 字段未映射到访问器

使用 Rails 3 和 ActiveModel,我无法使用 self. 获取基于 ActiveModel 的对象内的属性值的语法。

在下面的代码中,在 save 方法中,self.first_name 的计算结果为 nil,其中 @attributes[:first_name] 的计算结果为 'Firstname'(初始化对象时从控制器传入的值)。

在 ActiveRecord 中这似乎可以工作,但是在 ActiveModel 中构建相同的类时,它就不行了。您如何在基于 ActiveModel 的类中使用访问器来引用字段?

0 投票
6 回答
21950 浏览

ruby-on-rails - 如何测试自定义验证器?

我有以下验证器:

我希望能够在我的 lib 目录中的 RSpec 中对此进行测试。到目前为止的问题是我不确定如何初始化EachValidator.

0 投票
2 回答
83 浏览

ruby-on-rails - Rails 模型变量意外更改

在这里发疯。任何指点都感激不尽!

我有一个交付模型,我正在尝试添加一种方法来根据交付线更新交付状态。该函数在模型类中定义,delivery_state 是模型属性之一:

我在日志中看到的是在两logger.debug行之间,delivery_state 已被清除:

如果我注释掉上面代码中标记的行,它似乎可以正常工作:

但是,刷新后我可以看到在此之后仍然预计交货?

0 投票
2 回答
97 浏览

ruby-on-rails - 在rails中创建多个具有关系的对象

我是新来的铁路。

我有一个注册表单,用户可以在其中创建项目,同时注册。项目应该被创建,并且新用户成为项目的“管理员”。

我有以下型号:

我正在寻找创建封装模型层中的关系设置,并使其易于在视图中为关系中的所有对象创建表单、显示错误等。

希望我很清楚,新手到 rails 。谢谢

0 投票
3 回答
605 浏览

ruby-on-rails - 在返回时强制转换 ActiveModel 属性

在我的 Rails 3.1.1 项目中,我有一个与 API 对话的 ActiveModel(摘自 Paul Dix 的书,为便于阅读而缩短了):

@job我在我的控制器中实例化new操作(company_id是路由中的分段键:),/companies/:company_id/jobs/new如下所示:

然后,使用 CanCan,我检查用户创建作业的权限。基本上,CanCan 检查 current_user 的company_id属性是否与作业的company_id. 此检查失败,因为@job.company_id返回为字符串。

当然,我可以在实例化对象时使用 params[:company_id].to_i ,但这似乎是我以后必须重复的一种解决方法。

问题: 有没有办法让我的 Job ActiveModel 更加“类型感知”并使其返回 int 以进行@job.company_id调用?

我四处搜索,检查activemodel源代码,但似乎没有找到答案。任何帮助是极大的赞赏。

更新 我正在考虑更多类似schemaActiveModel 的块,就像 ActiveResource 中的块一样。

0 投票
2 回答
321 浏览

ruby-on-rails - 基于 ActiveRecord 验证错误的决策

我对 Rails 很陌生,想知道最好的方法是什么:

我有一个控制器在数据库中创建记录。

如果发生特定的验证错误,我想设置一个标志,但我看不到使用我熟悉的 rails 模式完成此操作的好方法。

我要检测的模型验证是:

我的控制器正在这样做:

当上述错误失败时,我可以使用 ActiveModel 错误集合。

我应该如何可靠地设置一个标志以编程方式指示标题已被占用?

到目前为止我考虑过

但如果 title 因其他原因失败,这将返回 true。所以我需要更多类似的东西:

但这将是一个令人头疼的维护问题,并且还会被不同的语言环境破坏......

那么有谁知道这应该如何使用 RoR 来完成?

感谢您的任何建议

编辑:建议标志“is_title_duplicated”的示例用法:

0 投票
1 回答
58 浏览

ruby-on-rails - 在 ruby​​ 中调用给定实例的类方法

我正在使用 rails ActiveModel,我定义了 2 个这样的方法:

但我认为我需要一个更通用的方法,如下所示:

但是我不知道如何调用给定实例的类方法,在上面,给定任务,我可以调用 Task.find 而不指定类名“Task”

有什么解决办法吗?谢谢!