На моей странице платежей есть определенные переменные, такие как card_number, которые я хочу передать из представления в модель, но я не хочу хранить их в базе данных. Обычно я могу легко добиться этого, просто используя attr_accessor, но в этом случае модель передается в params через accept_nested_attributes_for, и по какой-то причине параметры не передаются:
в User.rb у меня есть
has_many :credit_cards
accepts_nested_attributes_for :credit_cards
в представлении file у меня есть вложенное поле формы, что-то вроде:
blah blah
<h2>Credit card</h2>
<%= f.fields_for :credit_cards do |builder| %>
<%= render "credit_card_fields", :f => builder %>
<% end %>
inside that
<p>
<%= f.label :test %><br />
<%= f.text_field :test %>
</p>
теперь снова в credit_card.rb у меня есть:
attr_accessor :test
before_create :show_me_test_param
private
def show_me_test_param
raise "#{test}"
end
Странно то, что когда я пытаюсь сохранить запись, он просто возвращает пустое исключение. Похоже, что параметр не был передан от пользователя к CreditCard через accept_nested_attributes_for?
Передаваемый параметр:
{"email"=>"name@example.com", "password"=>"pass123", "password_confirmation"=>"pass123", "credit_cards_attributes"=>{"0"=>{"test"=>"helllo this is the second attempt", "name_on_card"=>"first lastname", "card_number"=>"987498742897", "card_verification_value"=>"232", "expiry_date"=>"2141"}}}
Кто-нибудь знает, что происходит? Accept_nested_attributes_for работает с attr_accessor?