ruby-on-rails - 使用单表继承 (STI) 时验证类型的正确方法是什么?

标签 ruby-on-rails ruby-on-rails-3 activerecord

我正在尝试对我的某些模型使用单表继承。基本模型是锦标赛,我希望扩展它以创建不同类型的锦标赛。例如,我可能想添加 SingleEliminationTournament 或 DoubleEliminationTournament,这两者都将从 Tournament 继承。我有 2 个问题,它们都有些相关。

1) 我希望用户能够使用表单创建锦标赛,为此,他们需要选择一个子类。有没有办法获取所有子类并使用它们来填充选择框或类似的东西?

2) 由于此信息将进入表单,因此如果能够验证输入的类型就好了。为此,我想在 Tournament 类中添加一个验证,可以检查以确保类型有效。

显然,我可以将值硬编码到验证和表单中,但我不想这样做。任何帮助,将不胜感激。谢谢!

最佳答案

TheModel.subclasses 

将为您提供需要包含的类型列表,但前提是模型在运行时加载。它们将始终以生产模式加载。您必须在开发模式下手动加载它们。

关于ruby-on-rails - 使用单表继承 (STI) 时验证类型的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9184035/

相关文章:

ruby-on-rails - rails 2.3.8 : Fetching objects via ActiveRecord without building all the objects

ruby-on-rails - Rails Active Record,如何在查询结果中添加附加字段参数?

ruby-on-rails - Rails 迁移删除行

sql - rails Postgres : Query to find corresponding models in a "triangle of models"

mysql - 在 Rails DB 迁移期间截断表是否有风险?

ruby-on-rails - 未初始化的常量 CustomersController - Rails

ruby-on-rails - Notepad++中是否可以将文件扩展名与其中的点相关联?

ruby-on-rails - 添加自定义参数以设计注册 - 未经许可的参数

ruby-on-rails-3 - Rails 3 更新连接表的属性(有很多,通过关联)

ruby-on-rails - Rspec:如何修复所需的编码格式版本 4.8; 34.92 给出的错误