hum*_*ing 6 validation ruby-on-rails transient attr-accessor
我从来没有找到一个很好的方法来做到这一点,所以我想我会问.
例如,在ActiveRecord模型中,数据库支持的属性会自动进行类型转换为适当的数据库支持类型.如果我有一个Category模型,它有几个属性的,说name和category_id,如果我是这样的:
Category.new(params[:category])
Run Code Online (Sandbox Code Playgroud)
Rails知道这name是一个String并且category_id是一个Integer.
假设我有几个我要验证的瞬态/合成属性,并且它们具有特定类型.我想从表单中提交它们,我希望它们根据它们的定义自动转换为String或Integer或Date(例如).
如果我要在Rails模型中声明一些内容,例如:
attr_accessor :some_number_variable
attr_accessor :some_date
Run Code Online (Sandbox Code Playgroud)
是否有一个内置的方式来告诉Rails"我想你前强制转换为整数,而后者的日期,当我走Category.new(params[:category])",只要params[:category][:some_number_variable]和params[:category][:some_date]提交给控制器的数据的一部分(我知道考虑到许多日期格式,Date示例可能有点棘手).
从 Rails 5 开始,你可以像这样使用Attribute API:
class SomeModel < ActiveRecord::Base
attribute :a_checkbox_name, :boolean, default: false
end
Run Code Online (Sandbox Code Playgroud)
您可以设置默认值,并定义您自己的类型,等等。然后您可以像任何其他数据库支持的属性一样验证这些属性(虚拟或非虚拟)。
| 归档时间: |
|
| 查看次数: |
3622 次 |
| 最近记录: |