Как да създадете ActiveModel обект в rails 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
Това е само временен обект. Унищожавам обекта веднага след изпълнение на очакваната задача. Не искам да съхранявам тези данни в db.   -  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