2012-04-06 30 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的東西,列出Company,Person的所有實體嗎? – uday 2012-04-06 13:44:55

+0

你使用單表繼承嗎? – 2012-04-06 14:12:45

回答

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]到一個類名。這是一個等待被利用的安全漏洞。