Как создать объект ActiveModel в рельсах 3

У меня есть следующий класс модели в ActiveRecord. Как написать эквивалентную ActiveModel для этого класса?

class Recommendation < ActiveRecord::Base
  def self.columns() @columns ||= []; end

  def self.column(name, sql_type = nil, default = nil, null = true)
    columns << ActiveRecord::ConnectionAdapters::Column.new(name.to_s, default, sql_type.to_s, null)
  end

  column :from_email, :string
  column :to_email, :string
  column :article_id, :integer
  column :message, :text
  serialize :exception

  validates_format_of :from_email, :to_email, :with => /^[-a-z0-9_+\.]+\@([-a-z0-9]+\.)+[a-z0-9]{2,4}$/i
  validates_length_of :message, :maximum => 500

  belongs_to :article
end

person Achaius    schedule 02.02.2012    source источник
comment
Почему ? Recommendation не поддерживается базой данных?   -  person Thong Kuah    schedule 02.02.2012
comment
Это просто временный объект. Я уничтожаю объект, как только ожидаемая задача завершена. Я не хочу хранить эти данные в БД.   -  person Achaius    schedule 03.02.2012
comment
правильно, ActiveModel - хороший выбор для этого, так как тогда вам не придется его уничтожать   -  person Thong Kuah    schedule 03.02.2012


Ответы (1)


Я предлагаю вам начать с простого класса, а затем начать добавлять модули ActiveModel. Скажем, начните с проверки.

http://api.rubyonrails.org/classes/ActiveModel/Validations.html

class Recommendation
  include ActiveModel::Validations

  attr_accessor :from_email, :to_email, :article_id, :message

  validates_format_of :from_email, :to_email, :with => /^[-a-z0-9_+\.]+\@([-a-z0-9]+\.)+[a-z0-9]{2,4}$/i
  validates_length_of :message, :maximum => 500
end

Другие документы ActiveModel можно найти по адресу http://api.rubyonrails.org/.

person Thong Kuah    schedule 03.02.2012