2

私のアプリには、このような検証ルールがあります

validates_presence_of :name, :on => :custom_context

データを保存するときに使用する

@obj.save(:context => :custom_context)

私のコンテキスト検証ルールが適用されるように。これはうまくいきます。私のフォームでは、名前フィールドにアスタリスクが付いていません。:custom_contextフォーム ヘルパーに、コンテキスト内にいること、および名前フィールドを必須としてマークする必要があることを伝えるにはどうすればよいですか?

4

2 に答える 2

0

あなたが何をしようとしているのか理解できませんでしたが、シナリオは理解しました。モデルでattribute_accessorを使用できます-

attribute_accessor :コンテキスト

ビュー (.html.erb ファイル) で <% form_for %> 内で次の操作を行います

<%= f.hidden_field :context, :value => "custom_context" %>

そしてあなたのモデルで:

validates_presence_of :name, :if => Proc.new { |変数| variable.context == "custom_context"}

私はこれが役立つはずだと思います:D

于 2013-01-04T10:25:26.833 に答える
0

OK、これを行う完璧な方法はないと思います。最終的に私はこのようなことをしました:

<%= f.input :name, :required => required_in_context?(:name, :custom_context) %>

そしてヘルパーメソッドを書きました:

def required_in_context? field, context
  required = false
  MyClass.validators.each do |v|
    required = true if v.kind == :presence && v.attributes.include?(field) && v.options == {:on => context}
  end
  required
end
于 2013-01-09T11:58:36.143 に答える