ruby-on-rails - 类型安全的 Rails 3 无表模型

标签 ruby-on-rails ruby ruby-on-rails-3 activemodel

Railscast描述如何在 Rails 3 中设置无表模型,如下所示:

class Message
  include ActiveModel::Validations
  include ActiveModel::Conversion
  extend ActiveModel::Naming

  attr_accessor :name, :email, :content

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

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

  def persisted?
    false
  end
end

它工作得很好,但它没有做的是让 Rails 知道属性的类型。这意味着虽然各种插件/库都可以工作,但它们往往会回退到有效地将属性视为“任何”类型。例如 to_xml 将它们列为“yaml”类型。

有没有办法告诉 Rails Tableless 模型中属性的类型是什么?

最佳答案

你应该看看ActiveAttr ,它提供了这样的类型转换属性:

class Person
  include ActiveAttr::TypecastedAttributes
  attribute :age, :type => Integer
end

还有一个RailsCast about ActiveAttr .

关于ruby-on-rails - 类型安全的 Rails 3 无表模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8914835/

相关文章:

ruby-on-rails - 助手中的 ActiveRecord

ruby-on-rails - 作为可标记行为-麻烦将所有部分放在一起

javascript - 在列表框边缘浏览器中选择多个选项 ruby​​ selenium webdriver

ruby-on-rails - 用于安装仅执行一次的 gem 迁移的 Rake 任务

ruby-on-rails - 如何清理 Rails 中凌乱的 View 和 Controller ?

ruby-on-rails - Rails3,从 cron 运行 rake 任务

ruby-on-rails - Rails 奇怪的错误 => IndexError : string not matched

ruby-on-rails - 在 ActiveRecord 中热切加载多态关联

ruby - 在子类 Subregex 中重写 Regexp 的 =~ 运算符,导致执行 "example"=~ subregexex 时出现奇怪的行为

ruby-on-rails - 使用模型的委托(delegate)字段进行 Rails 查询