【问题标题】:How to create ActiveModel Object in rails 3如何在 Rails 3 中创建 ActiveModel 对象
【发布时间】:2012-02-02 09:15:44
【问题描述】:

我在 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

【问题讨论】:

  • 为什么? Recommendation 不是数据库支持的吗?
  • 它只是一个临时对象。预期任务完成后,我将立即销毁该对象。我不想将这些数据存储在数据库中。
  • 对,ActiveModel 是一个不错的选择,因为这样您就不必销毁它了

标签: ruby-on-rails-3 activemodel


【解决方案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/ 找到

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多