我有问题模型,它具有属性“status”,“code”,“type”。
所有三个属性都应该是下拉列表,例如状态可以是“活动/关闭/非活动”等等。
这些下拉列表的所有可能选项都应来自数据库。存储它的最佳方法是什么。
我计划创建具有
的新模型说查找[lookup_for][lookup_type][lookup_value]
并使用HABTM将该模型链接到问题并创建联合表lookup_questions。
这样我就可以通过查询查找表来获取所有状态以填充下拉列表,如
@questions_status = lookup.find_by_lookup_type('status')
我的方向正确吗?,我不是经验丰富的人,请指教。
答案 0 :(得分:0)
您可以创建模型Status
,Code
和Type
,并将值存储在值列中各自的数据库表中。 User
模型可能看起来像这样
class User < ActiveRecord::Base
has_one :status
has_one :code
has_one :type
end
例如,您可以使用Status.all
填充下拉列表。
请注意ActiveRecord模型中的type
列。它保留用于单表继承。
答案 1 :(得分:0)
将简单的状态statii(?)放在数据库中,更不用说HABTM可能不是一个好主意。仅保留用户更改或可能定期更改(半)的数据表。 为了让事情顺利进行,只需在模型中添加选项,如果你看到它们发生了很大变化,那就添加一个表
在你的模特中
STATUS = [
# Displayed stored in db you can use integer or strings at per field.
[ "Active", 1 ],
[ "Closed", 2 ],
[ "Inactive", 3 ]
表格(新/编辑)
<%= f.select :question_status,
Question::STATUS,
:prompt => "Select" %>
在节目中
<%=h (Question::STATUS.find_all{|disp, value| value == @question.question_status}).map {|disp, value| disp} %>
答案 2 :(得分:0)
最后我遵循了HABTM的关系。我认为这是我的应用程序更正确的方式(因为查找将继续更新)。