Tag: 子类化

在Rails中inheritance用户模型真的很糟糕吗?

我从Rails得到了很多回击,因为我将User子类化为许多不同的子类。 在我的应用程序中,并非所有用户都是平等的 实际上有很多模型对象,并不是每个用户类型都可以访问它们。 我还需要一种方法来做多态行为。 例如,根据类型,许多方法的行为会有所不同。 这不是多态性的意思吗? 但事实是,我总是从Rails中退出。 默认值 – 特别是表单提交给参数哈希的方式 – 似乎像非子类模型一样工作。 链接和参数哈希只是默认设置真正咬你的两种方式。 在Rails中为不同类型的用户处理复杂逻辑的“正确”方法是什么? 在Java中,子类化模型可以工作 – 您不必通过箍来使其按照您希望的方式工作。 但是在Rails中,很难让子类使用REST约定,当你忘记包含:as => :user时它会惩罚你,或者当你在链接中放入子类对象时会惩罚你,例如edit_user_path(@user) < – 坏主意! 还有一个区域也很难处理。 假设我有一个Company模型,它有很多Users 。 这些用户可以是导演,教师,学员等 – 所有不同的子类。 当我们创建帐户时,我们可能希望使用accepts_nested_attributes_for :users 。 但是,如果我们使用它,我们就不能指定它创建的类。 血淋淋的地狱! 似乎Rails中的所有内容都不希望您将模型子类化。 如果你没有子类,一切都“正常”。 但如果你是子类,那你就是为了地狱。 解决办法是什么?