0

新しいユーザーを作成しようとしていますが、ユーザーにはミュージシャンが 1 人いて、ミュージシャンはユーザーに属しています。このリレーションを作成する前は、作成は機能していましたが、現在はエラーが発生しています:

ミュージシャンが期待し、文字列を取得しました

しかし、なぜこれが起こっているのかわかりません。私のuser_idに何かがあると思います

def create
    @user = User.new(params[:user])

    if params[:user].musician
      @user.musico = Musician.New

    else
      @user.estudio = Studio.new 
    end

    if @user.save
      sign_in @user
       flash[:success] = "Welcome!!"
      redirect_to @user
    else
      render 'new'
    end
  end

そして提出物はこちら

{"utf8"=>"✓",
 "authenticity_token"=>"VjOUW75ocw8rw/rEqa076x9N/Oa/5AjMxBOmRGAaDAM=",
 "user"=>{
 "firstName"=>"Eduardo",
 "lastName"=>"Almeida",
 "email"=>"eduardo@teste.com.br",
 "city"=>"Mogi",
 "password"=>"[FILTERED]",
 "password_confirmation"=>"[FILTERED]",
 "musician"=>"true"},
 "commit"=>"Criar Conta"}

編集:フォーム

<%= form_for(@user) do |f| %>
    <%= render 'shared/erros' %>
    <%= f.label :firstName, "Nome" %>
    <%= f.text_field :firstName%><br/>      
    <%= f.label :lastName, "Sobrenome" %>
    <%= f.text_field :lastName%><br/>
    <%= f.label :email, "Email"%>
    <%= f.text_field :email%><br/>
    <%= f.label :city, "Cidade"%>
    <%= f.text_field :cidade%><br/>
    <%= f.label :password, "Senha"%>
    <%= f.password_field :password%><br/>
    <%= f.label :password_confirmation, "Confirme a senha"%>
    <%= f.password_field :password_confirmation%><br/>
    <%= f.hidden_field :newMusico, :value => true%>
    <%= f.submit "Criar Conta", class: "btn btn-large btn-primary" %>
 <% end %>
4

1 に答える 1

1

Userリクエストのパラメータを使用して新しいを作成しています。これにはmusicianパラメータが含まれます。これは、次のことと同等です。

u = User.new
u.musician = "true"

関連付けにより、ユーザー インスタンスはインスタンスを期待していMusicianますhas_one :musician

修正するには、ミュージシャンまたはスタジオを新しいユーザーに追加する必要があるかどうかを示すために使用するパラメーターの名前を変更できます。new_musician

その後、テストで問題が発生すると思いますparams[:user].new_musicianparams[:user]はハッシュなので、のようにアクセスする必要がありますparams[:user][:musician]。また、文字列値を持つ"true""false"、確認する必要があります。

if params[:user][:new_musician] == "true"
于 2013-09-20T19:43:19.687 に答える