Rails id在db中,但没有模型

时间:2014-03-18 07:26:54

标签: ruby-on-rails ruby haml

在我的数据库中我有这样的字段:

color_id

并在表单中使用此类代码,将其存储在db:

= f.select :color_id, options_for_select([["белый", 1], ["желтый", 2], ["зеленый", 3], ["коричневый", 4], ["красный", 5], ["оранжевый", 6], ["серебристый", 7], ["серый", 8], ["синий", 9], ["фиолетовый", 10], ["черный", 11], ["другой", 12]], :selected => f.object.color_id), {:prompt => "Выберите цвет кузова"}, required: true

所以我决定不使用模型和db表,只是来自html表单的id,以及db中的这个id存储。

但如何在show动作中查看不是它,而是颜色?

我只能使用if,如:

- if c.color_id == 1
  белый
- if c.color_id == 2
  желтый

但也许有更优雅和更好的解决方案?如何在我的情况下将id更改为数组的颜色

2 个答案:

答案 0 :(得分:2)

你可以定义方法颜色,它将根据color_id

放置文本
def color(color_id)
  colors[color_id]
end

def colors
  ["name1", "name2"]
end

请注意,数组从0开始,代码ID从1开始

答案 1 :(得分:2)

您可以在具有color_id字段的模型中创建一个Hash,如下所示:

COLORS = {"1" => "белый", "2" => "желтый",...}

然后你可以在模型中调用一个方法来获得打印颜色

def color
  COLORS[color_id.to_s]
end