问题标签 [virtual-attribute]
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.
ruby-on-rails - 将虚拟属性与超类 (STI) 中的单个类属性组合
我正在尝试组合表单中的start_date
、start hour
和start_minute
virtual 属性Event
,以创建一个start_datetime
属性(存储在数据库中)。
我(通过 STI)有几个子类Event
;让我们称它们为TrainingSession
andWorkSession
和PersonalTime
。
类的结构如下:
的相关部分event.rb
:
...和events_controller.rb
:
我已经在我的服务器日志中验证了正确的参数是从表单发送的:
然而,每次我尝试创建一个事件(任何类型)时,我都会收到通知There was an error creating the event.
(根据我的创建方法)。如果我注释掉validates :start_datetime
,则创建事件,但使用start_datetime
of nil
。
这必须意味着start_datetime
字符串没有从虚拟属性中正确合并,但我不知道为什么。
我在这里想念什么?有没有更好的设置方法start_datetime
?
ruby-on-rails - CanCan,Rails 4,虚拟属性上的 UnknownAttribute 错误
我花了很长时间弄清楚如何在创建新记录期间通过 CanCan 获取虚拟属性:
我有 Teams,带有 :name 和 :description
团队通过成员资格拥有用户,我通过单独的控制器操作进行控制,并将数据保存在我称为“member_selections”的参数中,其中包含带有非特定键的哈希(user_id => 角色)。
因此:我的参数哈希可能如下所示:
我有这里引用的强参数的常用 CanCan 解决方案: https ://github.com/ryanb/cancan/issues/835
为了通过白名单穿透虚拟属性,我使用了这里提到的一种技术,在底部:http: //blog.sensible.io/2013/08/17/strong-parameters-by-example.html
具体来说,我的“team_params”方法如下所示:
现在,如果我删除 .tap 和白名单块,我可以创建新团队,但不能添加新成员。
如果我维护 .tap,我可以添加新成员,但我无法创建新团队。提交“新”表单会产生以下结果:
它甚至在正确调用 TeamsController#create 方法之前就给出了这个错误,所以这不是我将参数错误地传递给 Team.new/.create 的问题,并表明这是一个 CanCan 问题。
Rails 4 中的虚拟属性和 CanCan 是否有其他问题?我怎样才能解决这个问题?
谢谢!
ruby-on-rails - 在 Rails 4 中使用 Devise 的虚拟属性
我的用户模型没有:name
字段,但我想:name
在我的注册表单中包含一个字段,该字段将用于在after_create
.
如何从注册表单中获取姓名?
ruby-on-rails - Rails 应用程序中的虚拟属性 - 为什么 attr_writer 不能使我的输入与我的 getter 和 setter 方法一起使用?
我正在尝试推出自己的标签系统。我的设置(目前)很像acts_as_taggable_on,带有标签、可标记对象和标签以将一个与另一个相关联。Taggable 是一个模块,它将包含在事件、用户和可能的其他几种可标记对象中。目前我只是想把它与事件联系起来。
我正在关注Railscast #167。
在 railscast 中,虚拟属性 tag_names 可以通过attr_writer :tag_names
.
attr_accessible :tag_names
我的问题是,除非我使用(即'attr_accessible' 而不是'attr_writer'),否则我无法让tag_names 字段接受输入。
指定时attr_writer :tag_names
,我提交表单并收到错误:“无法批量分配受保护的属性:tag_names”。当我attr_accessible :tag_names
改为时,它似乎可以正常工作,但这是一个安全问题,对吧?(请注意:事件对象的数据库中没有tag_names 字段。)
为什么我不能复制 Railscast?我正在运行 Rails 3.2.11,Railscast 是从 2009 年开始的,但是我找不到任何说 attr_writer 在这个更高版本或类似的东西中已经被 attr_accessible 取代的东西。
谢谢你的帮助!
我的活动表单的相关部分:
我的事件模型:
我的可标记模块:
ruby-on-rails - Rails 虚拟属性未验证
我想在很多方面我仍然是一个新手,对这些 Rails 的一些东西。我有用于付款的 ActiveRecord 模型。但是,它只有两件事被添加到它的表中,一旦我们从 authorize.net 得到积极的回应,这些事情就会完成。在这个模型的控制器中,我有我的购物车表单。在购物车表单中,我有从@client 和信用卡信息中提取的默认值的账单信息。它看起来有点像这样:
现在在模型中,我添加了 attr_accessor :cardnumber 和其他卡信息字段。
对于这些,我没有任何 getter 或 setter 方法(也许这就是我所缺少的)。
但是,我在付款模型中确实有这个:
然而,到目前为止,表单将一起绕过此验证并前往结帐。任何帮助将不胜感激!如何让这些验证正常工作?
ruby-on-rails - Rails 3.2,虚拟访问器和弃用警告
我真的对 Rails 3.2 中的虚拟属性感到困惑,我所有的研究都无助于让事情变得更清晰。
以上,我已经编译了我在互联网上找到的几乎所有替代品。这不是我运行的代码,只是同一事物的几个版本。虽然,无论我尝试什么,我都会收到以下警告:
DEPRECATION WARNING: You're trying to create an attribute 'parent'. Writing arbitrary attributes on a model is deprecated. Please just use 'attr_writer' etc.
有时,我什至得到一个stack level too deep
. 我很想了解属性是如何工作的。
1/attr_accessor
是attr_writer
加attr_reader
对吗?为什么要求我attr_writer
在警告中使用?
2/ 我应该如何从模型中写入属性(以及为什么)
3/ 我应该如何从控制器中写入属性(以及为什么)
非常感谢!
更新
经过进一步测试,看起来正确的方法是@parent = id.to_i
。我仍然很想解释为什么。我真的很困惑为什么self.
不工作。
ldap - 使用“isMemberOf”虚拟属性来确定用户的组成员身份有哪些注意事项?
是否所有 LDAP 服务器都支持此虚拟属性(默认情况下)?
我读到我们必须在使用它之前启用这个虚拟属性。这是它对所有 LDAP 服务器的工作方式吗?这不是默认启用的吗?
使用它来确定用户的组成员身份还有其他缺点吗?
ruby-on-rails - 多个字段的单个虚拟属性定义
我想知道是否有办法设置虚拟属性,以便它可以处理多个字段/变量。
基本上,我的模型中有几个不同的整数列(收入、税收),对于每个列,我需要检查表单何时提交,并删除非法字符,我正在通过设置虚拟属性并使用tr
to strip那些角色。
然后我在控制器中设置强参数,应该这样做:
问题是我有很多字段(不仅仅是我上面列出的两个),所以对于每个字段,(其中许多只需要检查完全相同的非法字符)我必须使用一个新的虚拟属性和基本上只是重复相同的代码:
无论如何,是否可以为许多不同的字段设置一个公共共享属性,同时仍然能够设置强参数?
ruby-on-rails - 为什么我的虚拟属性不起作用?
我正在Rails 3.2.17
尝试访问模型中的两个虚拟属性(expiration_amount
& expiration_format
),但我尝试过的任何方法都不允许我访问它们。
其他一切似乎都正确更新,但是在我的日志中,虚拟属性总是空白。
编辑我按照建议添加了两者:expiration_amount
:expiration_format
,attr_accessible
但它仍然无法正常工作。他们俩都是空白的。我确实注意到的一件事是记录器调用是在它到达数据库之后发生的。这before_update
不是正确的过滤器吗?
编辑 2是否有可能Devise
阻止访问虚拟属性?
编辑 3我刚决定从控制器中启动它(它正在工作),但我仍然很好奇为什么我无法访问模型中的那些虚拟属性。
工作控制器动作(更新方法)
工作模型法
---原始代码---
用户.rb
形式
日志
ruby-on-rails-4 - Rails 4:composed_of 映射到 JSON 存储属性
我设置了以下模型
我datetime_select
在我的表单中使用了助手:
这工作得很好,但是当我update
用提交的表单数据调用我的控制器时,我收到以下错误消息:
所以,我猜更新的方法试图attributes
直接操作哈希,但显然它找不到属性expires_at
,因为它是 JSON 列的简单访问器方法data
。
我知道我可以简单地将这个字段添加到数据库中,它可能会起作用——尽管那时不需要composed_of
声明。但我宁愿不走这条路,因为不是每个任务都有一个expires_at
专栏。
我该如何克服这个错误?还是我错过了什么?