私はRoRを初めて使用するので、助けを求めることができると思いました。探している具体的な答えが見つかりませんでした。
Deviseを使用して作成したいモデル化に問題があります。DeviseはMemberモデルを設定します。私は、Memberよりも多くの属性といくつかの異なるビューを持つSuperMemberモデルが必要です。
バックグラウンドでメンバーアカウントを自動的に作成しながら、スーパーメンバーを作成するためのネストされたフォームを設定したいと思います。
Member.rb(deviseによって生成された)
class Member < ActiveRecord::Base
devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable
attr_accessible :email, :password, :password_confirmation, :remember_me
end
SuperMember.rb
class Supermember < ActiveRecord::Base
attr_accessible :first_name, :last_name
belongs_to :member, :dependent => :destroy
accepts_nested_attributes_for :member
end
Supermembers.controllers.rb
def new
@supermember = Supermember.new
@supermember.member = Supermember.build
respond_to do |format|
format.html # new.html.erb
format.json { render json: @supermember }
end
end
def create
@supermember = Supermember.new(params[:supermember])
respond_to do |format|
if @supermember.save
format.html { redirect_to @supermember, notice: 'Supermember was successfully created.' }
format.json { render json: @supermember, status: :created, location: @supermember }
else
format.html { render action: "new" }
format.json { render json: @supermember.errors, status: :unprocessable_entity }
end
end
メンバーとスーパーメンバーの両方を生成するために、ネストされたフォームを作成しようとしました。
<%= simple_form_for(@supermember) do |f| %>
<%= f.error_notification %>
<div class="form-inputs">
<%= f.input :first_name %>
<%= f.input :last_name %>
</div>
<% # Devise member %>
<%= f.fields_for :member do |m| %>
<div class="form-inputs">
<%= m.input :email, :required => true, :autofocus => true %>
<%= m.input :password, :required => true %>
<%= m.input :password_confirmation, :required => true %>
</div>
<% end %>
<div class="form-actions">
<%= f.button :submit %>
</div>
<% end %>
問題は、このフォームを送信すると、次のエラーメッセージが表示されることです。
Can't mass-assign protected attributes: member_attributes
Application Trace | Framework Trace | Full Trace
app/controllers/supermembers.rb:44:in `new'
app/controllers/supermembers.rb:44:in `create'
私はそれを修正する方法を本当に理解していません。これについて手伝ってくれませんか。どうもありがとうございます!