0

私はデバイスを介して登録プロセスに取り組んでいます

フォーミュラーを介して登録する「ユーザー」に「支払い」を保存しようとしています。ユーザーがチェックボックスから「銀行」を選択すると、それに応じた支払いもユーザーに作成される必要があります。

<!-- language: ruby -->
class User < ActiveRecord::Base

 devise :database_authenticatable, :registerable, :confirmable,
         :recoverable, :rememberable, :trackable

  attr_accessible :email, :password, :password_confirmation, :remember_me, :first_name, :last_name

  attr_accessible :payments_attributes
  # also tried attr_accessible :payments_attributes, :payments
  has_many :payments, :autosave => true

  accepts_nested_attributes_for :payments, allow_destroy: false

end


class Payment < ActiveRecord::Base

  attr_accessible :method, :paid
  attr_accessor :method, :paid

  belongs_to :user

end

new.html.erb

  <%= f.fields_for :payment do |payment| %>
        <div>
          <%= payment.radio_button(:method, 'bank') %>
          <%= payment.label :bank_transfer %>
          <%= payment.radio_button(:method, 'paypal') %>
          <%= payment.label :paypal %>
        </div>
    <% end %>



These are the attributes I wanna set:

my_attributes = {"first_name"=>"Max", "last_name"=>"Mustermann", "password"=>"12345678", "password_confirmation"=>"12345678", "email"=>"max@mustermann.at", "company"=>"ACME INC", "industry"=>{"title"=>"Metall", "oenace"=>"123"}, "payments"=>{"method"=>"bank_transfer", "paid"=>"false"}}

User.new(my_attributes)
# ActiveModel::MassAssignmentSecurity::Error: Can't mass-assign protected attributes: payments

また、これをユーザーモデルに追加しようとしました:

  def after_initialize
    self.payments.build if self.payments.blank?
  end

これらのパラメーターが保存されない理由はありますか?

4

1 に答える 1