Rails中的单表inheritance4

我试图在Rails 4中实现一个简单的STI,但是我还有一些东西无法实现。

我有以下课程:

class Person < ActiveRecord::Base end class NaturalPerson < Person end class LegalPerson < Person end class Employee < NaturalPerson end class Customer < NaturalPerson end 

问题是,我有一些属性,我只想从Employee类访问,有些只来自Customer等,但我找不到方法。 如果我要使用Rails 3的方式,我会用attr_accesible解决它。 但现在这是不可能的,因为我既不使用attr_accesiblegem,也不愿意。

我在我的控制器中使用了不同的person_params,

 def person_params params.require(:person).permit(:email, :last_name, :first_name) end def natural_person_params params.require(:person).permit(:email, :job, :location) end 

并创建一个方法,我将测试对象的类名称或类型属性,因为它是一个STI),以确定使用哪些参数…

希望这可以帮助

干杯

如果您尝试为所有模型使用单个控制器,则将所有属性放入列出白名单的参数中。

 def person_params params.require(:person).permit(:email, :last_name, :first_name, :job, :location) end 

如果你想将它们分开,那么你需要为每种类型的人提供单独的参数:

 def person_params params.require(:person).permit(:email, :last_name, :first_name) end def employed_person_params params.require(:person).permit(:email, :job, :location) end