Таблица для небольшого количества регистров ... Я бы не хотел этого делать - PullRequest
0 голосов
/ 21 января 2011

Я бразилец, извините за мой английский.

У меня есть модели Pet и Pet_Model. Оба имеют цвета.
Я не хотел бы делать таблицу с 4, 5 цветами (регистры).

Во-первых, я сделал модель Color (без таблицы базы данных) с атрибутом array colors с хэшами имени цвета и его кода:

 class Color
        def colors  
            [{:name => 'blue', :cod => '#FF9'}, {...}, ...]  
        end
 end 

И я использовал 'fields_for: colors' в форме Pet erb.

Но у меня были проблемы, чтобы спасти эти данные из базы данных. Тогда я действительно думаю сделать таблицу для цветов. Но эта таблица будет содержать только 4, 5 регистров ... Понятно?

Какое лучшее решение? Создать или не создать таблицу для этих цветов?

Спасибо

[EDIT]

актуальны ...

VIEW

<% for color in Color::COLORS.keys %>
  <%= check_box_tag 'pet[colors][]', color %>
  <%= color %><br/>
<% end -%>

MODEL

class Pet < ActiveRecord::Base
    serialize :colors
end

1 Ответ

0 голосов
/ 21 января 2011

Я действительно не уверен, что понимаю ваш вопрос, но при условии, что у вас есть заранее определенный хэш цветов, и вы хотите иметь возможность использовать этот хэш, чтобы установить цвет для ваших питомцев и моделей питомцев.

Если этот выбор цветов не изменится, вы можете использовать константу, содержащую цвета, и битовую маску для сохранения выбранного цвета в ваших моделях - тогда вам не понадобится таблица цветов. У Райана Бейтса есть хороший скринкаст, в котором используется эта техника: http://railscasts.com/episodes/189-embedded-association

В вашем случае вам, вероятно, потребуется переопределить хеш, чтобы выглядеть примерно так

{ "red" => "#f00", "blue" => "#ff9", … }

А потом только сдай ключи

{ "red" => "#f00", "blue" => "#ff9", … }.keys # -> ["red", "blue", …]

Я где-нибудь рядом с тем, что вам нужно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...