gpt4 book ai didi

ruby-on-rails - 基本 Rails 问题 : Building Data Over Several Pages

转载 作者:数据小太阳 更新时间:2023-10-29 07:49:08 25 4
gpt4 key购买 nike

所有 Rails 专家站点都说不要在 session 中存储 ActiveRecords。但是,我有一个跨多个页面的多字段 ActiveRecord 对象。我试图清理的代码使用了隐藏字段来向前传递数据,这似乎是个坏主意(用户可以篡改一件事)。将模型填充页面分成几个页面的典型或好的方法是什么?

注意:我可以将 ActiveRecord 保存到数据库中,然后使用我存储在 session 中的 ID 获取它...问题是 ActiveRecord 有多个验证,如果没有所有数据,它就无法保存。我可以将参数本身存储在 session 中,或者其他什么......必须有一个标准的方法来做到这一点......

最佳答案

我们使用以下看起来效果很好的模式。

  1. 向模型添加一个名为 wizard_stage 的属性访问器:

    attr_accessor :wizard_stage

  2. 在表单中添加一个隐藏字段:wizard_stage 用于每个页面的记录。将字段的值设置为反射(reflect)页面功能的值,例如:

    f.hidden_​​field :wizard_stage, :value => 'contact_details'

  3. 在模型验证中,添加如下条件:

    验证 ... :if => lambda{|m| m.wizard_stage == 'contact_details'}

现在每次提交都可以保存记录,逐渐填充更多的属性。

请注意,这允许攻击者根据需要绕过验证,但在我们的情况下(大多数情况下?)这并不重要。

关于ruby-on-rails - 基本 Rails 问题 : Building Data Over Several Pages,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/991343/

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