问题标签 [attr-accessible]

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 投票
2 回答
491 浏览

ruby-on-rails - Rails:当我们使用 attr_accessible 时如何更新迁移中的数据?

当我们尝试更新表中包含的某些数据时,我们遇到了迁移问题。

我们的基本模型如下所示:

用户

  • 用户名
  • 密码
  • …</li>

我们创建了第一个迁移以在模型中添加一列,然后更新现有行:

第二次迁移应该创建一个 last_name 列并将 username 列重命名为 first_name:

它在开发中没有任何问题,因为第二次迁移是在第一次迁移几天后创建的(所以每个人都有足够的时间在第二次迁移之前应用第一次)。

我们遇到的问题是,当我们尝试在暂存/生产中将这些迁移部署到以下模型时:

第一次迁移在保存时失败,因为 first_name 和 last_name 尚不存在,尽管它们存在于 attr_accessible 中。

即使我们尝试绕过验证,问题仍然存在。

你有没有遇到过这种问题,你能帮我们绕过它吗,因为我们想坚持完整的 ruby​​ 代码而不编写任何 SQL?

0 投票
1 回答
1023 浏览

ruby-on-rails - 如何正确地将值数组传递给 `attr_accessible` 方法?

我正在使用 Ruby on Rails v3.2.2,我想处理一个符号数组,以便将它的值传递给attr_accessible方法,以及它应该被制作。也就是说,我有:

如果我使用:

我得到以下信息:

但是,我想得到:

以及应该做的。

我怎样才能做到这一点?

0 投票
1 回答
1354 浏览

mongodb - Mongoid attr_accessible 不工作

今天早上我醒来时遇到了一个奇怪的问题,其中 mongoid 正在为模型中未定义的属性创建记录

为了克服这个问题,我决定实现 attr_accessible 也在 Mongoid规范中提到

“提供可访问的字段列表只是保护它们的反面。任何未定义为可访问的内容都会导致错误。” -- Mongoid 规范

认为一切都会好起来的

"任何未定义为可访问的内容都会导致错误

这是我的模型结构

这里是我从控制台创建的记录

知道为什么会这样吗?

谢谢

0 投票
1 回答
283 浏览

ruby-on-rails - Rails 3 教程 Michael Hartl - 第 9.4.1 节重新访问 attr_accessible - 恶意 PUT 请求

我是 Rails 初学者,目前正在阅读 Michael Hartl 的 Rails 3 教程,并且有一个我非常好奇的问题:
在通过“faker”创建管理员用户和其他 99 个普通用户的上下文中,Hartl 解释了为什么它会将“:admin”添加到用户模型中的 attr_accessible 并因此将“admin:true”添加到“faker”测试代码中的初始化哈希是一个坏主意。相反,他解释说应该使用“toggle!(:admin)”并避免在可访问属性中添加“:admin”,否则恶意用户可以直接发送 PUT 请求,如“PUT /users/17?admin=1”。 http://ruby.railstutorial.org/book/ruby-on-rails-tutorial#sec:revisiting_attr_accessible

因此,按照 Hartl 的建议,我的管理员布尔值现在是安全的,但是我的其他用户属性(例如姓名、电子邮件)被定义为可访问属性呢?这是否意味着恶意用户可以通过类似于上述的 PUT 请求轻松更改这些属性?在教程中,Hartl 谈到了一个名为 curl 的命令行工具,它可以发出这样的 PUT 请求表单。我真的不想用我的示例应用程序尝试这个,我的问题只是,我是否忽略了某些东西或者可能是恶意 PUT 请求,例如“put /users/17?name='new_name'”?

如果有人会回答我的问题,请提前感谢您!

0 投票
1 回答
465 浏览

ruby-on-rails - 在 attr_encrypted 使用所述虚拟属性作为加密密钥之前未设置虚拟属性

何时encryption_key由 调用attr_encrypted:passphrase尚未设置。加密密钥最终是盐的 sha1 散列;它应该是密码和盐的 sha1 哈希。

salt 在创建时生成并保存在数据库中。

如何:passphrase在加密密钥中使用虚拟属性?

有什么建议么?

为简洁起见,我省略了一堆代码。

提前致谢!

0 投票
2 回答
387 浏览

ruby-on-rails - 如果我将所有 db 列都放在 attr_accessible 中,我是否可以免受批量分配攻击?

我知道在 Rails 3.2 中,所有属性本质上都是“黑名单”,这迫使您通过attr_accessible.

但是,如果我将表attr_accessible中的每一列都设为,那我是否容易受到批量分配攻击?

如果不是,为什么不呢?

如果是这样,强制列入白名单有什么意义?

这是一个真正的问题,因为我的一个生产应用程序我被迫拥有这样的东西,只是为了让 Devise 工作:

想法?

0 投票
2 回答
1810 浏览

ruby-on-rails - 在 Rails 中分配受保护的属性

我的用户模型上有一个受保护的字段,因为它决定了许可级别。所以它应该受到保护而不是大量分配。因此,即使属性在 3.2 中默认受到保护,这实际上也是我想要的行为。

但是,在一种控制器方法上,我希望允许经理分配此字段,例如在用户创建或用户更新时。

如何允许为特定控制器操作分配该属性?

例如,我有我的控制器:

现在我要做的是 exclude clearancefrom params[:user],但它似乎在到达该行之前就被过滤掉并引发和异常(我尝试debugger在该行之前放置一个权利,甚至将其注释掉,它仍然引发了一个异常)。

受保护的属性在哪里被捕获,如果不是在调用时User#new

0 投票
1 回答
52 浏览

ruby-on-rails - 如何创建附加到两个用户的模型?不干扰 attr_accessible

我正在制作游戏,并且有一个 Game 模型和一个 User 模型。

游戏模型如下所示:

现在,在我的游戏控制器中,我调用 Game.new。我确定它是用 current_user 和 challenge_user 调用的,因为我检查了日志记录。

不幸的是,我得到了错误:

我不明白这一点,因为我使用了 attr_accessible,而不是 attr_accessor,所以它们应该是可分配的。Rails,我应该怎么做?

0 投票
1 回答
456 浏览

ruby-on-rails - Rails attr_accessible 仅适用于seed.rb?

我正在通过 PragProg(显然已经过时 - 我正在使用 Rails 3.2.3)Rails for PHP Developers自学 Rails 。我发现了这本书没有提到的种子.rb 文件。我已经尝试为许多事情建立适当的种子条目,它给了我can't mass-assign protected attributes.

经过一堆搜索,看来我唯一的选择是通过attr_accessible或关闭阻止批量分配的默认功能打开这些东西。但我想保留该设置所暗示的任何安全性。我不希望这些条目在播种后被编辑。我只需要先将这些放入数据库中。

我在这里没有看到什么?如何在不关闭保护的情况下播种这些数据?似乎种子应该是一种特殊情况,允许在不允许的情况下进行大规模分配。

0 投票
1 回答
292 浏览

ruby-on-rails - 使用 Ruby on Rails 将 attr_accessible 限制为用户类型

我正在创建一个论坛软件。我希望管理员和模组能够关闭某些主题。

对代码进行清理以仅显示相关信息。

楷模

用户模式:admin 和 mod 列确定管理员和 mods。

主题模式:关闭列确定主题的关闭状态。

我不愿意用户attr_accessible :closed使用 TOPIC 模型,因为它容易受到恶意 PUT 请求的攻击(如果我错了,请纠正我)。

Rails 应用程序有什么方法可以在closed不使用的情况下访问和修改 TOPIC 列的值attr_accessible,以便只有 mods 和管理员可以编辑它们?