gpt4 book ai didi

ruby-on-rails - Rails attr_accessible :object vs :object_id

转载 作者:行者123 更新时间:2023-12-04 01:08:32 26 4
gpt4 key购买 nike

一个 User has_one Account .设置时attr_accessible在 User 模型上是否更好地保护 :account , :account_id还是两者兼而有之?

attr_accessible :account


attr_accessible :account_id


attr_accessible :account, :account_id

我觉得两者都是可行的方法(因为它更安全),即使它感觉不那么干燥。

更新以提供更多背景

只是为了提供更多关于我为什么要问的背景知识。我和大多数人一样,看到了 Github 发生了什么,所以我们正在检查我们的应用程序并将其锁定得更紧一些。

在这样做的过程中,我发现了我们传入帐户的测试
User.create account: account
以及我们传入 account_id 的地方:
User.create account_id: account.id
我的选择是要么将它们全部更改为一致,要么更改 attr_accessible允许。我决定将它们全部更改以保持一致。但这让我担心我们可能会在整个应用程序中同时使用这两种方法,我可能会因为只允许其中一种方法而破坏我们的应用程序。

当我说使用两者更安全时,我确实说错了。这是漫长的一天。

最佳答案

这个没有正确的答案,尽管它确实取决于您打算如何更新此用户。 attr_accessible :account将允许您像这样直接批量分配帐户:

user.update_attributes(:account => account)

如果您已经有一个要与用户关联的帐户对象以及许多其他属性,则很有帮助。另一方面, attr_accessible :account_id如果您从下拉列表或其他表单元素中分配帐户 ID,则更合适:
user.update_attributes(params[:user]) # params[:user][:account_id] is a part of this hash

后一种情况通常被认为更危险,并且是 Github 最近安全问题的一部分:您可以发布您喜欢的任何 account_id,包括不属于您的帐户,并且您的用户将被分配给它。

所以总的来说,我会选择前者并进行查找以确保该帐户是您期望的帐户,但正如我在开头所说的那样,您可以根据您打算如何使用它来选择任何一种方式。

关于ruby-on-rails - Rails attr_accessible :object vs :object_id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9690119/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com