0

私はこのモデルを持っています:

class User < ActiveRecord::Base
  # abstract
end

class Company < User

end

class Person < User

end

タイプを選択してフォームを作成するにはどうすればよいですか?

<%= simple_form_for(@user) do |f| %>
    <%# I would like to have a selector of classes ["Company","Person"] %>
    <%= f.input :type %>
    <%= f.input :name %>
<% end %>

コントローラでは、どのようなコードを記述すればよいですか?

@user = User.new(params[:user]) # Pb params[:user][:type] have no effect
4

2 に答える 2

0

これはあなたができる限り簡潔です:

@@classmap = { :person => Person, :company => Company }
@@Classmap[params[:user].delete :type].new(params[:user])

params[:type]クラス名に直接変換しないでください。これは、悪用されるのを待っているセキュリティ ホールです。

于 2012-04-06T15:04:58.270 に答える
0

type 属性を一括で割り当てることはできません。次のように実行できます。

type = params[:user].delete :type
@user = User.new(params[:user])
@user.type = type
@user.save
于 2012-04-06T13:45:26.483 に答える