我在没有数据库后端的 Rails 3.1.1 项目中使用 ActiveModels。
我想知道如何将属性的类型设置为 String、Boolean、Decimal。
据我了解,当使用由数据库支持的 ActiveRecord 时,类型将直接从数据库元数据中获取。但是没有数据库,我应该在哪里定义属性类型呢?
编辑
我认为我的问题可以问得更好,如何将模型元数据添加到由 rest 或 JSONRPC2 服务支持的模型?
例如,我可以创建翻译器,确保将该模型编码为 JSON,知道哪个属性(ruby 中的属性,JSON 中的属性)是 bool 值,哪个是数字——或者我可以尝试动态地找出它-- 但似乎最好让我的模型用元数据注释,说明将这些属性/属性存储为什么类型(在服务中)。
接受的答案仍然不完全合适。尽管 Rails 模型不关心类型,但序列化方案 (JSON) 确实关心类型。在 JSON 中,数字和 bool 值不应序列化为字符串。
最佳答案
您使用 attr_accessor
定义类的属性以供 ActiveModel 使用。不需要类型。
参见 this question关于“键入的 attr_accessor”。
关于activerecord - Rails ActiveModel 属性类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9115772/