ruby-on-rails – Rails attr_accessible:object vs:object_id
用户has_one帐户.在用户模型上设置attr_accessible最好是保护:account,:account_id或者两者兼容?
attr_accessible :account 要么 attr_accessible :account_id 要么 attr_accessible :account,:account_id 我觉得两者都是要走的路(因为它更安全),尽管它感觉较少干. 更新给予更多的背景 只是为了给我更多的背景,为什么我问.我像大多数ppl一样,看到Github发生了什么事情,所以我们正在通过我们的应用程序,把它锁定得更紧. 在这样做的过程中,我发现我们通过的测试 User.create account:account 我们在account_id中传递的地方: User.create account_id:account.id 我的选择是将它们全部改为一致,或者改变attr_accessible以允许任一.我决定把它们全部变成一致的.但是这让我担心我们可能在我们的应用程序中使用这两种方法,我可能只允许一个或另一个打破我们的应用程序. 当我说使用两者更安全的时候,我做了misspeak.这是一个漫长的一天. 解决方法
这个没有正确的答案,尽管它取决于你打算如何更新这个用户. attr_accessible:帐户将允许您直接像这样大量分配帐户:
user.update_attributes(:account => account) 如果您已经拥有要与用户关联的帐户对象以及许多其他属性,则此功能很有用.另一方面,attr_accessible:如果您从一个下拉菜单或其他一些表单元素分配帐户的ID,则account_id将更为合适: user.update_attributes(params[:user]) # params[:user][:account_id] is a part of this hash 后一种情况通常被认为更危险,并且是Github最近的安全问题的一部分问题:您可以发布任何您喜欢的account_id,包括不属于您的帐户,并且您的用户将被分配给它. 所以总体而言,我会去前者,并查找一下,以确保帐户是一个你期望的,但正如我刚才所说,你可以采取任何一种方式,这取决于你打算如何使用它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |