gpt4 book ai didi

ruby-on-rails - 在 Rails 3 中保存之前操作表单数据的最佳做法是什么?

转载 作者:行者123 更新时间:2023-12-04 05:56:26 25 4
gpt4 key购买 nike

从 Rails 最佳实践的角度来看,保存前操作表单数据的最佳位置是什么?

例如,在联系表格上,我想确保所有数据都以大写形式保存(你不讨厌人们在他们的“请联系我”表格提交中对你大喊大叫吗?:-))

  • 在 Controller 中进行操作更好吗?我可以在创建时执行此操作,也可以将其移动到某种私有(private)方法中,这将在保存/更新之前将对象的所有字符串属性大写?

或者

  • 在模型 before_save 中做更好吗?对我来说,它应该在模型中完成是有意义的,因为我可能希望所有记录都相同,无论我是在抽取任务中还是通过 Web 界面对它们进行操作。

奖励:

另外,如果我希望在我的所有模型上都使用它,并且能够根据具体情况覆盖默认值,我应该把它放在哪里?应用 Controller ?可能有一些特殊情况,您希望在不大写的情况下节省值(value) - 即不大写的品牌名称产品(即 utorrent)或名称中应有多个大写字母的姓氏(即爱尔兰和苏格兰名字,如麦当劳)

谢谢!

最佳答案

放置它最简单的地方是在你的模型中。如果您觉得更合适,我建议您使用 before_save 或什至 before_validation。像这样的东西就可以了:

before_save :upcase_content

def upcase_content
self.content = self.content.upcase
end

此外,如果您希望根据具体情况允许异常(exception)情况,您可以向您的模型添加一个 attr_accessor。

class MyModel < ActiveRecord::Base
attr_accessor :dont_upcase

before_save :upcase_content, :unless => :dont_upcase
...
end

然后在创建模型时将访问器设置为 true

@model = Model.new(:brand_name => utorrent)
@model.dont_upcase = true
@model.save!

关于ruby-on-rails - 在 Rails 3 中保存之前操作表单数据的最佳做法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5344119/

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