问题标签 [mass-assignment]

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 投票
4 回答
1645 浏览

ruby-on-rails - Rails - attr_accessible & mass assignment

我有一个关于attr_accessible在 Rails 中使用的问题。

我有时想设置guard_protected_attributesfalse以绕过批量分配保护。我想知道为什么以下行不起作用(它会产生“无法字符串化键”错误):

...但这确实:

有人知道原因吗?

0 投票
1 回答
4532 浏览

ruby-on-rails - 在 Rails 中使用 accept_nested_attributes_for + 批量分配保护

假设你有这个结构:

请注意,不能故意访问 Tv 的用户。因此,您有一个三重嵌套表单,可让您在一个页面上输入房屋、房间和电视。

这是控制器的创建方法:

问题:您将如何user_id为每台电视填充内容(它应该来自 current_user.id)?有什么好的做法?

这是我在此看到的catch22。

  1. user_ids直接填充到params哈希中(它们非常嵌套)
    • 保存将失败,因为user_ids不可批量分配
  2. #save 完成后为每台电视填充用户
    • 保存将失败,因为user_id必须存在
    • 即使我们绕过上述内容,电视也会有一段时间没有 id - 糟透了

有什么体面的方法可以做到这一点吗?

0 投票
1 回答
325 浏览

ruby-on-rails - 我可以更改rails中新模型实例的分配顺序吗

我有两个属性,“a_value”和“b_id”。(不是他们的真名。)“a_value”存储在文件系统中,使用模型“B”中的一些信息,由“b_id”引用。

所以,我的 params 对象看起来像:

例如。

现在,在 foo_controller.rb 中:

但这失败了。

在 Foo.a_value=(value) 我有

看起来 Rails 正在按字母顺序进行分配,并且当 b_id 不存在时会惊慌失措,即使它存在于 params 哈希中并通过了验证。

我可以强制执行此任务的顺序吗?或者我可以创建一个 before_filter 在剩余的质量分配发生之前执行 b_id 分配吗?

0 投票
1 回答
450 浏览

ruby-on-rails - Allow mass asignment in certain contexts

I have several Rails models that I'm trying to expose via a REST api. I'm looking for a simple way to allow mass assignment in certain contexts (through the api or admin interface) but to disallow when populating from user based forms.

There are a few catches as well. First, I'm populating a bunch of child objects using accepts_nested_attributes_for. Second, I'm using resource_controller plugin which automatically applies params correctly for you in standard update case. The api controllers are in their own "namespace" so I'm open to something DRY that could be implemented in a base controller.

Several solutions come to mind but no clean solution presents itself at the moment. Any suggestions?

0 投票
2 回答
1022 浏览

ruby-on-rails - rails:与belongs_to关系的大规模分配安全问题

我一直在阅读有关 Rails 安全问题的信息,而让我最担心的是批量分配。我的应用程序正在使用 attr_accessible,但是我不确定我是否完全知道处理暴露关系的最佳方法是什么。假设我们有一个基本的内容创建/所有权网站。用户可以创建博客文章,并拥有一个与该博客文章相关联的类别。

所以我有三个模型:

  • 用户
  • post:属于一个用户和一个类别
  • 类别:属于用户

我允许对 category_id 进行批量分配,因此用户可以将其取消,将其更改为他们的类别之一,或者通过批量分配,我想他们可以将其更改为其他人的类别。这就是我有点不确定最好的方法是什么。

我调查的资源(特别是railscast #178和从该 railscast 提供的资源)都提到关联不应该是可批量分配的,这是有道理的。我只是不确定如何让用户以一种随意的方式更改帖子的类别。

关于如何最好地解决这个问题的任何想法?我看错了吗?

更新:希望能进一步澄清我的担忧。

假设我在 Post,我是否需要以下内容:

这似乎是很多工作?我需要在更新和创建操作中检查每个控制器。请记住,不仅仅是一个 belongs_to 关系。

0 投票
2 回答
1432 浏览

ruby - ruby 并行分配,步骤问题

所以,我试图通过做一些项目欧拉问题来学习红宝石,我遇到了一些我无法解释的事情,以及逗号?运算符?位于两者的中间。我一直没能找到好的文档,也许我只是没有按照我应该的那样使用谷歌,但是好的 ruby​​ 文档似乎有点稀疏。. .

1:你如何描述这是如何工作的?第一个片段是我不明白的 ruby​​ 代码,第二个是我编写的代码,它只有在煞费苦心地跟踪第一个代码后才做同样的事情:

2:在下面的例子中,你如何描述带有'step'的行在做什么?据我所知,step 命令的工作方式类似于 (range).step(step_size),但这似乎正在执行 (starting_point).step(ending_point, step_size)。我对这个假设是否正确?我在哪里可以找到这方面的好文档?

0 投票
1 回答
259 浏览

ruby-on-rails - Rails 应用程序无法识别生产中批量分配的 belongs_to 关联

我有一个属于客户经理的 Account 模型:

我的控制器如下所示:

请求如下所示:

出于某种原因,在提交此请求后,表单显示客户经理为空白。但这仅发生在生产上,而不是本地开发上。有人见过这个吗?唯一的区别是我在生产中使用 REE,但我认为这不是问题,因为这是 Rails 功能。Rails 版本在本地和产品上是相同的 - 3.0.0

0 投票
4 回答
3012 浏览

ruby-on-rails - Ruby on Rails attr_protected

我的用户模型中有以下代码:

我正在尝试创建一个新的用户对象,但使用以下代码得到一个批量分配保护错误。

有谁知道我如何解决 attr_protected 以使此代码正常工作并为电子邮件分配值?

谢谢你。

0 投票
1 回答
588 浏览

ruby-on-rails - has_many 通过吹走协会关于大众协会的元数据

嘿,不是 Rails 菜鸟,但这让我很难过。With 在 Rails 中有很多通过关联。当我通过葡萄酒列表关联(或通过)表格将葡萄酒大量分配到葡萄酒吧时,类似这样的东西。

这将删除与该酒吧关联的每个酒单行。然后它会在 wine_ids 中找到所有的葡萄酒,我们假设它是一个逗号分隔的葡萄酒 id 字符串。然后它在酒单中插入一个新的关联。这将是昂贵的,但如果被破坏的关联行没有元数据,例如单个酒吧每杯和每瓶的价格,那很好。

有没有办法让它不把所有东西都吹走,只需对数组进行可枚举的比较并插入删除任何更改。我觉得这是 rails 所做的事情,我只是缺少一些明显的东西。

谢谢。

0 投票
1 回答
396 浏览

ruby-on-rails - 漏洞?我必须批量分配参数两次以更新 has_many 关联

我有一个 Register 模型,它 has_many :telephones Register 模型接受_nested_attributes_for :telephones, :reject_if 号码和代码空白?,并且有 attr_accessible :telephones_attributes (以及所有其他字段)

电话belongs_to :register 并且所有字段都具有attr_accessible

当表单发送参数时,它似乎格式正确,但是当表单字段发送到 @register.attributes = params[:register] 时,它将更新所有字段,但不会更新现有电话(应该更新到它的字段也是如此),它们只是保持以前的样子(我在调试时检查过)

现在这是它变得奇怪的地方,在我测试它的控制台中,我认为它与参数有关,因为我可以让它在那里工作,现在我发现它的行为就像我想要的 has_many 关联只有在第一次之后我尝试分配它,我在控制器中尝试了这个(质量分配参数两次)并且它有效。

当然,它必须与我使用 model.attributes = params 分配的事实有关,我这样做是为了我还可以保存对系统更改的监视(而且我没有这样做在 before_filters 中,因为我必须访问一些我认为特定于控制器的数据,例如 current_user 和 on)可能是糟糕的设计......但这不是很奇怪吗?我必须批量分配两次才能工作?这是某种错误吗?有谁知道是否有办法解决它?

  • 我在 Rails 2.3.8,红宝石 1.8.6

编辑:这是示例代码,这里的很多代码都是葡萄牙语,虽然:/

电话 = 电话,地籍 = 登记

正如你所看到的,我有一个 all_changes 方法来聚合对某些关联所做的更改,还有一个用于注释的自定义设置器(commentario_interno/externo)作为一次添加一条注释的方法......