我有一个拥有许多其他模型的模型,但这个模型只需要10个或更少的id。
让我们说它有,浴室,厨房,LivingRoom为了论证,新记录可能永远不需要改变。
制作这样一个不使用数据库表的模型的最佳方法是什么?
答案 0 :(得分:1)
这可能不是最佳做法,但为了解决同样的问题,我在模型中指定了一个集合,如下所示:
ROOM_TYPES = [ "Bathroom", "Living Room", "Kitchen" ]
然后在视图中:
<%= f.select(:room_type, Project::ROOM_TYPES, {:prompt => '...'}) %>
(将Project
替换为您的实际型号名称。)
超级简单,几乎没有设置。我可以看到它是如何难以维护的,因为没有办法在不访问Rails代码的情况下添加项目,但它确实可以快速完成工作。
答案 1 :(得分:0)
即使行的集合永远不会更改,但为了利用ActiveRecord关系,将它作为数据库中的表仍然很有用。一个不太人为的例子是具有美国州列表的数据库表。这极不可能改变,并且可能只有几列(州名和州名缩写)。但是,通过将这些文件存储在数据库中并使用ActiveRecord支持它们,您可以保留使用常规rails语义搜索状态中所有用户等便捷操作的能力。
话虽这么说,另一种方法是简单地创建一个类,你坚持在你的模型目录中,不会从ActiveRecord继承,然后在加载应用程序时从数据库中填充一次,或者只是手工填充它。
昨天提出了类似的问题,其中一个答案提出了一种支持类似于你想做的事情的机制:
How to create a static class that represents what is in the database?