Я предполагаю, что во многих отношениях я все еще новичок с некоторыми из этих рельсов. У меня есть модель ActiveRecord для платежей. Но у него есть только две вещи, которые добавляются в ее таблицу, и это делается после того, как мы получим положительный ответ от authorize.net. В контроллере для этой модели у меня есть моя форма для корзины. В карточной форме у меня есть информация о выставлении счетов с значениями по умолчанию, полученными из @client и информацией о кредитной карте. Это выглядит как это:Rails Виртуальный атрибут (ы) Не проверяется
<%= form_for @payment, :url => { action: "checkout" } do |f| %>
...show errors ...
<%= f.fields_for @client do |ff| %>
<%= ff.label :firstname, 'First Name*' %>
<%= ff.text_field :firstname %>
...more fields ....
<%= ff.label :zip, 'Zip*' %>
<%= ff.text_field :zip %>
<% end %>
<%= f.label :cardnumber, 'Card Number*' %>
<%= f.text_field :cardnumber %>
... more cc info fields ...
<% end %>
Теперь в модели я добавил attr_accessor: cardnumber и другие поля инфопанели.
У меня нет методов получения или сеттера для них (возможно, это то, чего мне не хватает).
Однако, у меня есть это в платежной Модели:
validates :zip, presence: true, numericality: true
validates :cardnumber, presence: true, numericality: true
Тем не менее, до сих пор форма будет обойти эту проверку все вместе и идет направление к кассе. Любая помощь будет принята с благодарностью! Как я получу эти проверки для правильной работы?
Ну, я добавил его, и я получаю это сейчас: ArgumentError in PaymentsController # cart Вам необходимо предоставить хотя бы одну проверку. –
К сожалению, опечатка в этом коде. В строке валидации должно быть указано «validate» вместо «validates» (нет s). Исправлена. – AndyV
Это сработало для меня. У меня была передача rspec FactoryGirl, поскольку действительный метод передавал мои виртуальные атрибуты. Добавление пользовательской проверки разрешило ее. – Tim