0

我有 Question model ,它具有属性 "status" 、 "code" 、 "type" 。

所有三个属性都应该是一个下拉列表,比如状态可以是“活动/关闭/非活动”等等。

这些下拉列表的所有可能选项都应该来自数据库。存储它的最佳方法是什么。

我计划创建新模型说查找

[lookup_for][lookup_type][lookup_value] 

并使用 HABTM 将该模型链接到问题并创建一个联合表 lookup_questions。

这样我就可以通过查询查找表来获取所有状态以填充下拉列表

@questions_status = lookup.find_by_lookup_type('status')

我的方向正确吗?,我没有经验,请给我建议。

4

3 回答 3

0

您可以创建一个模型StatusCode并将Type值存储在它们各自的数据库表中的值列中。User模型可能看起来像这样

class User < ActiveRecord::Base
  has_one :status
  has_one :code
  has_one :type
end

例如,您可以填写下拉列表Status.all

顺便说一句,要小心typeActiveRecord 模型中的列。它保留用于单表继承。

于 2012-11-11T21:04:13.153 回答
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} %>
于 2012-11-12T20:05:08.067 回答
0

最后我遵循了HABTM的关系。我认为这对我的应用程序来说是更正确的方式(因为查找将不断更新)。

于 2012-11-15T14:40:50.070 回答