Тип сейфа Rails 3 Tableless Model - PullRequest
2 голосов
/ 18 января 2012

Этот 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?

Ответы [ 2 ]

2 голосов
/ 03 марта 2012

Вы должны взглянуть на ActiveAttr , он предоставляет типизированные атрибуты, подобные этому:

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

Существует также RailsCast о ActiveAttr .

0 голосов
/ 07 сентября 2012

Существует activerecord-tableless gem.Это жемчужина для создания моделей ActiveRecord без таблиц, поэтому он поддерживает проверки, ассоциации, типы.

То, как вы описываете вопрос, не поддерживает ни ассоциации, ни (как вы обнаружили) типы.

...