2012-04-06 17 views
0

をsimple_form:私はこのモデルを持っているカスタムクラスを持つレコードを作成し、

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 
+0

あなたは、会社、人のすべてのエンティティをリストするdropboxのようなものを持っているはずですか? – uday

+0

あなたは単一のテーブルの継承を使用していますか? –

答えて

0

タイプ属性を割り当てることはできません。

type = params[:user].delete :type 
@user = User.new(params[:user]) 
@user.type = type 
@user.save 
0

これは、あなたがそれを作ることができると同じくらい簡潔である:

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

クラス名に直接params[:type]を変換しないでくださいあなたはこのようにそれを行うことができます。それは悪用されるのを待っているセキュリティホールです。

関連する問題