当前位置 : 主页 > 编程语言 > ruby >

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

来源:互联网 收集:自由互联 发布时间:2021-06-23
从rails最佳实践的角度来看,在保存之前操作表单数据的最佳位置是什么? 对于instace,在联系表单上,我想确保所有数据都以大写形式保存(当你们在“请联系我”表单提交时,你们不讨厌人
从rails最佳实践的角度来看,在保存之前操作表单数据的最佳位置是什么?

对于instace,在联系表单上,我想确保所有数据都以大写形式保存(当你们在“请联系我”表单提交时,你们不讨厌人们吗?:-))

>在控制器中进行操作会更好吗?我可以在创建中执行此操作,或将其移动到某种私有方法中,这将在保存/更新之前将对象的所有字符串属性大写?

要么

>在模型before_save中做得更好吗?
我觉得它应该在模型中完成,因为我可能希望所有记录都相同,无论我是在rake任务中还是通过Web界面操作它们.

奖金:

如果我想在所有模型上使用它,并且能够根据具体情况覆盖默认值,我还会在哪里放置它?应用控制器?
可能存在一些特殊情况,您希望在没有大写的情况下节省价值 – 即不使用大写字母的品牌产品(即utorrent)或名称中应该有多个上限的姓氏(即爱尔兰和苏格兰名称如麦当劳)

谢谢!

最简单的地方就是你的模型.如果您认为更合适,我建议使用before_save或甚至before_validation.像这样的东西可以做到这一点:

before_save :upcase_content

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

此外,如果您想要根据具体情况允许例外情况,可以在模型中添加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!
网友评论