问题标签 [virtus]

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 投票
3 回答
3258 浏览

ruby-on-rails - 带有 Virtus 的 Rails 表单对象:has_many 关联

我很难弄清楚如何创建一个 form_object 来创建多个关联对象以has_manyvirtus gem关联。

下面是一个人为的示例,其中表单对象可能是矫枉过正的,但它确实显示了我遇到的问题:

假设有一个user_form对象创建一个user记录,然后是几个关联的user_email记录。以下是模型:

我继续创建一个表单对象来表示用户表单:

人们会在UserForm课堂上注意到我有attribute :emails, Array[EmailForm]. 这是尝试验证和捕获将为关联user_email记录保留的数据。这是Embedded Value一个user_email记录表格:

现在我将继续展示users_controller设置 user_form 的方法。

new.html.erb: _

_form.html.erb

注意:如果有一种更简单、更传统的方式来显示user_emails此表单对象的输入:请告诉我。我无法fields_for上班。如上图:我不得不name手动写出属性。

好消息是表单确实呈现:

呈现形式

表单的 html 对我来说看起来不错:

表单的html

提交上述输入时:这是参数哈希:

params 哈希对我来说看起来不错。

在日志中,我收到两个弃用警告,这让我认为 virtus 可能已过时,因此不再是 rails 中表单对象的有效解决方案:

弃用警告:方法 to_hash 已弃用,将在 Rails 5.1 中删除,因为ActionController::Parameters不再继承自 hash。使用这种已弃用的行为会暴露潜在的安全问题。如果您继续使用此方法,您可能会在您的应用程序中创建一个可被利用的安全漏洞。相反,请考虑使用以下未弃用的记录方法之一:http: //api.rubyonrails.org/v5.0.2/classes/ActionController/Parameters.html(从新的(pry):1调用)弃用警告:方法to_a 已弃用,将在 Rails 5.1 中删除,如ActionController::Parameters不再继承自哈希。使用这种已弃用的行为会暴露潜在的安全问题。如果您继续使用此方法,您可能会在您的应用程序中创建一个可被利用的安全漏洞。相反,请考虑使用以下未弃用的记录方法之一:http ://api.rubyonrails.org/v5.0.2/classes/ActionController/Parameters.html(从新的(pry):1调用)NoMethodError:预期[ "0", "foofoo"} 允许:true>] 响应来自 /Users/neillocal/.rvm/gems/ruby-2.3.1/gems/virtus-1.0.5/lib/virtus/attribute_set.rb 的#to_hash :196:在“强制”中

然后整个事情出错,并显示以下消息:

我觉得我要么很接近并且缺少一些小东西才能让它工作,要么我意识到 virtus 已经过时并且不再可用(通过弃用警告)。

我看过的资源:

我确实试图让相同的表格工作,但使用了改革轨道 gem。我在那里也遇到了问题。这个问题张贴在这里

提前致谢!

0 投票
2 回答
514 浏览

ruby-on-rails-5 - Rails 中 Virtus 的默认值

我正在使用带有导轨(5.0.2)的virtus(1.0.5)。我将 Virtus 用于模型,因为它具有基于正在访问的页面的验证。

我的组织模型是

使用 virtus 创建的表单如下

不幸的是,上面的代码不起作用

0 投票
1 回答
826 浏览

ruby-on-rails - 从 Virtus.model 动态扩展时使用布尔属性辅助方法

假设我有一个User带有布尔属性的 Virtus 模型active

然后我可以使用一个辅助方法active?

但是当我尝试动态定义一个布尔属性时extendVirtus.model

并使用辅助方法active?我得到了一个NoMethodError例外。

在这种情况下是否有可能使用辅助方法?

0 投票
2 回答
815 浏览

ruby-on-rails - 动态扩展 Virtus 实例属性

假设我们有一个 Virtus 模型User

然后我们创建这个模型的一个实例并扩展 fromVirtus.model以动态添加另一个属性:

电流输出:

但是,当我尝试通过(或)或通过获取attributes或将对象转换为 JSON 时,我只得到后扩展属性:as_jsonto_jsonHashto_hactive

是什么导致了问题,如何在不丢失数据的情况下转换对象?

附言

我发现了一个github issue,但似乎它毕竟没有修复(那里推荐的方法也不能稳定工作)。

0 投票
1 回答
433 浏览

ruby-on-rails - 未定义的方法“持续存在?” 与改革和美德模型

我目前正在开发一个 Rails 应用程序(rails v5.1.1 和 ruby​​ v2.3.4),尝试在我的一条路线( )上使用改革/bookings/new表单对象时出现错误:

我正在使用virtus 模型(在其他情况下也可以正常工作):

这是我的表单对象:

这是new我的控制器上的操作:

这是我的部分表格:

我认为使用 virtus 模型而不是活动记录应该没有问题,因为改革将自己推销为Form objects decoupled from your models. 我有什么不对吗?

0 投票
0 回答
273 浏览

ruby-on-rails - 使用 rails form 对象在编辑中初始化数据

我无法使用使用 virtus gem 初始化类属性的数据。这是我的示例代码:

我的haml表格

ship_detail 字段(po_number,job_no)的数据未显示在文本字段中

0 投票
3 回答
608 浏览

ruby-on-rails - 使用干类型将逗号分隔值字符串强制转换为数组

我想强制表单输入

进入:

我将dry-typesgem 用于其他强制和约束。我需要知道:

  • 这是否可以通过导轨干式中的任何内置机制实现?

  • 如果不是,我如何使用dry-types为其定义自定义强制?

0 投票
1 回答
821 浏览

ruby-on-rails - Rails 表单对象中数组属性的渲染字段

现在我很难为里面的数组属性渲染表单字段可能是表单对象。我使用 virtus gem 来设置属性。

我的代码:

这是 JournalAccountAttribute 类

问题是我不知道如何在我看来呈现这个。所以我的关系是 1 Journal has_many 个帐户。

0 投票
1 回答
392 浏览

ruby-on-rails - 自定义包装 JSON 到 Virtus 模型?

我有一个如下所示的 JSON 对象:

和如下所示的 Virtus 模型:

除了尝试映射Project.categoryjson["projectCategory"]["name"].

所以总的来说,我正在寻找的最终 Virtus 对象应该如下所示:

现在我正在创建一个带有Project.new(JSON.parse(response))或基本上是 json 响应哈希的模型实例。如何自定义将 Virtus 的一些属性映射到我的 json 响应?

0 投票
2 回答
475 浏览

ruby - 在 Virtus Ruby 对象中使用字符串或哈希进行初始化

我需要能够创建一个基于 Virtus 的对象,该对象接受哈希或字符串。如果它是一个哈希,那么正常行为是完美的。如果它是纯字符串,那么我需要将其转换为{'id' => "STRING"}. 目前,我不确定如何/在哪里重写initialize执行此功能的方法。或者也许有不同的方式。非常感谢您的专业知识。

样本数据

所以在联系人和帐户之间。我需要它们能够使用填充@id 参数的字符串进行初始化。