Подтвердить что ты не робот

Модель Rails без таблицы

Я хочу создать список выбора, который позволяет говорить цвета, но не хочет создавать таблицу для цветов. Я видел его где угодно, но не могу найти его в google.

Мой вопрос: как я могу поместить цвета в модель без таблицы базы данных?

Или есть ли лучший способ рельсов для этого?

Я видел, как кто-то помещал массив или хэш непосредственно в модель, но теперь я не мог его найти.

4b9b3361

Ответ 1

class Model

  include ActiveModel::Validations
  include ActiveModel::Conversion
  extend ActiveModel::Naming

  attr_accessor :whatever

  validates :whatever, :presence => true

  def initialize(attributes = {})
    attributes.each do |name, value|
      send("#{name}=", value)
    end
  end

  def persisted?
    false
  end

end

attr_accessor создаст ваши атрибуты, и вы создадите объект с помощью initialize() и установите атрибуты.

Сохраненный метод подскажет, что с базой данных нет ссылки. Вы можете найти такие примеры: http://railscasts.com/episodes/219-active-model?language=en&view=asciicast

Что объяснит вам логику.

Ответ 2

Самый простой ответ - просто не подкласс ActiveRecord:: Base. Затем вы можете просто написать свой объектный код.

Ответ 3

Ответы прекрасны для 2013 года, но теперь рельсы 4 извлекли все независимые от базы данных функции из ActiveRecord в ActiveModel. Кроме того, там есть удивительное официальное руководство.

Вы можете включить столько модулей, сколько хотите, или как мало.

В качестве примера вам просто нужно include ActiveModel::Model, и вы можете отказаться от такого метода initialize:

def initialize(attributes = {})
  attributes.each do |name, value|
    send("#{name}=", value)
  end
end

Просто используйте:

attr_accessor :name, :age

Ответ 4

Если вы хотите иметь список выбора (который не развивается), вы можете определить метод в своем ApplicationHelper, который возвращает список, например:

 def my_color_list
   [
     "red",
     "green",
     "blue"
   ]
 end