Если я правильно понял ваш вопрос правильно, есть пять возможностей для статуса книги:
- NEW
- OLD
- VERY_OLD
- NEW & OLD
- OLD & VERY_OLD
Предполагая, что я прав, вы можете сделать это с помощью ActiveRecord::Enum. Это потребовало бы добавить только один новый столбец в вашу БД и не требовать новой модели.
Сначала добавьте status
столбец, если вы еще не получили один:
# In a migration
add_column :books, :status, :integer
add_index :books, :status
(Вы также можете добавить null: false
к линии add_column
, если вы не хотите, чтобы это было возможно для бронирование не иметь не статуса)
Затем добавить к вашей Book
модели:.
class Book < ActiveRecord::Base
enum status: [:new, :old, :very_old, :new_and_old, :old_and_very_old]
end
Это генерирует методы в книге под названием new?
, old?
, very_old?
и т. Д. Возможно, вы захотите переопределить эти, например, так new?
возвращает истину, если статус new_and_old
, а также просто new
:
def new?
status == "new" || status == "new_and_old"
end
Другой способ сделать это может быть, чтобы добавить логические столбцы книги под названием new
, old
и very_old
, но это потребовало бы вы должны добавить кучу валидаций (например, чтобы убедиться, что книга не может быть «новой» и «очень старой».)
Так что варианты: 1) NEW, 2) OLD, 3) VERY_OLD, 4) NEW & OLD и 5) OLD & VERY_OLD? – GMA
Хотите ли вы легко найти книги, которые являются NEW, те, которые являются OLD, те, которые являются NEW и OLD, для больших наборов данных? –
Что значит сохранить выбор пользователей в базе данных? Пользователи делают выбор в форме, вы решаете, как их хранить. Вы пытаетесь объединить два свойства здесь? Новые, старые и очень старые - это возрасты, с условием, мятой, tatty или злоупотреблением. –