我需要一个关于如何为我正在涂鸦的 Rails 4 应用程序构建模型的意见。架构应该不会太难,但我已经转了几个小时,所以我会把它扔给社区。
我有一个名为“checkin”的模型,它有很多“字段”。每个字段都可以有许多值,这些值可以是几种数据类型之一,这些数据类型的数量可能会随着时间的推移而增加,但对于初学者来说只是float
和string
。一旦将字段添加到签入中,其数据类型就无法更改。
想想一些人只想登录的减肥签到weight
。其他人可能想要登录weight
, %bodyfat
。其他人可能想要其他指标的额外字段或您所处心情的文本字段。
所以到目前为止我得到的是:
class Checkin < ActiveRecord::Base
has_many :fields
class Field < ActiveRecord::Base
belongs_to :checkin
然后我打算做
class DataFloat < ActiveRecord::Base
belongs_to :field
class DataString < ActiveRecord::Base
belongs_to :string
等等
模式很简单,现在只有参考。DataFloat 有一个浮点数,DataString 有一个字符串(如您所料)
然后我将使用类似ActiveRecord::Base.descendants
a 的东西(根据THIS)来创建一个选择框,以便您可以在将字段添加到签入时选择它是什么。
对于所有 MVC 专家,我的问题是这是否是最好的方法。拥有一个由 DataFloat 和 DataString 扩展的中心对象“Data”会更好吗?有没有我没想到的第三种更好的方法?