Можно ли выполнить проверку для элемента формы, который не является частью модели? - PullRequest
4 голосов
/ 13 ноября 2009

Итак, у меня есть форма регистрации, и часть ее - это информация для выставления счета / кредитной карты. Вся эта информация хранится и обрабатывается сторонним приложением, поэтому данные не хранятся в нашей базе данных.

Так как же мне по-прежнему запускать элементы с помощью методов validates_ в Rails? (validates_presence_of, validates_length_of и т. Д.)

Или я собираюсь провести валидацию не в тех местах?

Ответы [ 3 ]

1 голос
/ 30 июля 2012

Для будущих читателей, которые используют Rails3, ознакомьтесь с ActiveModel:

require 'active_model'

class Place
  include ActiveModel::Validations
  validates_presence_of :name
  attr_accessor :name
end
0 голосов
/ 13 ноября 2009

Да, я верю, что это можно сделать

например

 class User < ActiveRecord::Base
     attr_accessor :card_number
     validates_presence_of :card_number
 end

Вам необходимо создать атрибут в самой модели, а затем применить к нему проверку.

Вы также можете написать свой собственный метод доступа, который отправляет данные третьему лицу, как это

   class User < ActiveRecord::Base
   attr_accessor :card_number
   validates_presence_of :card_number

       def card_number=(number)
         .....
       end
   end
0 голосов
/ 13 ноября 2009

Вы можете создать фиктивную модель, чтобы упростить информацию вашей формы. Нет необходимости сохранять модели в базе данных.

Просто создайте новый файл в приложении / модели, и вы в значительной степени хороши.

пример: app / models / ccinfo.rb

class Ccinfo < ActiveRecord::Base

  attr_accessor :card_type, :card_number, :pin, :exp_month, :exp_date, :card_holder, ...

  validates_presence_of :card_holder
  ...

end

Если форма основана на другой модели, вы можете просто переместить внутренности вышеупомянутой модели в форму модели, на которой точно такой же эффект.

Вы можете подтвердить без сохранения, позвонив в действительный? метод. Визуализировать ошибки, как если бы они действовали, как с любой другой моделью? возвращает ложь В противном случае продолжите обработку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...