简单地说,我有一个模型用户,其名称,电子邮件和评论作为属性。
validates_presence_of :name
validates_presence_of :email
所以'name'和'email'是必需的,但不是'comment'。
my_user = User.new
我想找个像my_user.name.required一样测试的方法吗?或者User.name.required?那种事。
我的目标是创建表单并动态地将特定类添加到表单项span或td,具体取决于此项是否设置为“validates_presence_of”
我试图搜索它,但没有发现任何相关信息。有一个简单的方法吗?
由于
答案 0 :(得分:21)
没有一种方法可以调用来处理这个问题,但是this post讨论了如何创建一个帮助方法,这听起来就像你听到的那样。
module InputHelper
def required?(obj, attribute)
target = (obj.class == Class) ? obj : obj.class
target.validators_on(attribute)
.map(&:class)
.include?(ActiveModel::Validations::PresenceValidator)
end
end
答案 1 :(得分:6)
在演员阵容的2/3处查看此Railscast about form builder:
<强> /app/form_builders_labelled_form_builder.rb 强>
def field_label(name, *args)
options = args.extract_options!
required = object.class.validators_on(name).any? { |v| v.kind_of? ActiveModel::Validations::PresenceValidator }
label(name, options[:label], class: ("required" if required))
end
答案 2 :(得分:0)
我没有评论,因为我没有50个代表,但是在Rails 5+上这不再起作用。您可以这样做:
ModelName.validators_on(:attribute).any? { |v| v.class == ActiveRecord::Validations::PresenceValidator }
答案 3 :(得分:-4)
如果您使用导轨3或以上,那么
validates :name, :presence => true
为什么要动态添加类? 您可以控制需要填充的属性,以便在视图表单上添加一个类,只需在items标记上添加一个类即可。