gpt4 book ai didi

ruby-on-rails - :model and :model_id in attr_accessible for Rails/ActiveRecord? 之间的任何差异

转载 作者:行者123 更新时间:2023-12-02 02:11:31 25 4
gpt4 key购买 nike

当我创建一个脚手架并且我需要与另一个模型有一个 belongs_to 关系时,我添加了一个名为 model_id 的字段(用该模型的名称替换模型):

rails generate scaffold Grade user_id:integer subject_id:integer letter:string

然后在上面的 Grade 模型中,我可能会添加:

belongs_to :user
belongs_to :subject

Rails 自动将 user_idsubject_id 添加到 attr_accessible 字段列表中。将 :user:subject 添加到 attr_accessible 字段列表中,这样我也可以使用它们进行批量分配,这是否会造成任何伤害?

最佳答案

attr_accessible 旨在防止来自外部发送到您的应用程序的数据的批量分配攻击。在大多数情况下,您可能会在创建和更新操作中做这样的事情:

@model = Model.new(params[:model])
or
@model.update_attributes(params[:model])

您应该问问自己,为什么您会有一个表单使用 subject_id 而另一个表单使用 subject。这里唯一真正的危害是不一致,这实际上对大型项目非常不利。如果您遵循所有表单都将使用实际数据库列 (subject_id) 的约定,那么当您不记得为什么采用两种不同的方式时,您将来就不会头疼了。

如果您通过控制台更新属性,您可以使用 update_attributes(params[:model], without_protection: true) 或者我写的 gem sudo_attributes这让你可以执行 sudo_update_attributes(params[:model])

关于ruby-on-rails - :model and :model_id in attr_accessible for Rails/ActiveRecord? 之间的任何差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12561489/

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