2009-08-03 23 views
6

Tôi có thể định cấu hình động xác thực trong đường ray như thế nào? VÍ DỤ nếu tôi cóXác thực động Rails

validates_length_of :name, within => dynamic 

Biến "động" sẽ được người dùng đặt. Khi lưu, xác thực nên sử dụng giá trị của biến "động" để định cấu hình cấu hình bên trong.

+0

Bạn nên xem [xác định xác thực động với procs] (http://stackoverflow.com/a/9961015/1287376). –

Trả lời

13

Tôi không tin rằng validates_length_of hỗ trợ các thông số động. Bạn cần sao chép hành vi trong xác thực tùy chỉnh.

# in model 
def validate 
    unless (5..10).member? name.length 
    errors.add :name, "must be within 5 to 10 characters" 
    end 
end 

Điều đó sử dụng phạm vi tĩnh nhưng bạn có thể dễ dàng sử dụng biến phạm vi tùy chỉnh của riêng mình.

def validate 
    unless some_range.member? name.length 
    errors.add :name, "must be within #{some_range.first} to #{some_range.last} characters" 
    end 
end 

Bạn có thể muốn kiểm tra tôi Railscasts episode on conditional validations và Episode 3 trong Everyday Active Record series tôi.

+0

Cảm ơn câu trả lời của bạn. Tôi cần biến động trên validates_presence_of như sau: validates_presence_of: name,: locales => dynamic_array (: locale có thể là [: en,: de, ...] động). Cấu hình: miền địa phương theo validates_presence_of đi kèm với plugin i18n_multi_locales_validations. – phlegx

Các vấn đề liên quan