如何在rails中存储可能的属性

时间:2012-11-11 20:33:39

标签: ruby-on-rails model-associations

我有问题模型,它具有属性“status”,“code”,“type”。

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

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

我计划创建具有

的新模型说查找
[lookup_for][lookup_type][lookup_value] 

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

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

@questions_status = lookup.find_by_lookup_type('status')

我的方向正确吗?,我不是经验丰富的人,请指教。

3 个答案:

答案 0 :(得分:0)

您可以创建模型StatusCodeType,并将值存储在值列中各自的数据库表中。 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的关系。我认为这是我的应用程序更正确的方式(因为查找将继续更新)。