我是Ruby新手,至今與我的正常編程語言C#相比,感到困惑。目前我掙扎的是我有一個擴展ActiveRecord::Base
的類,但是代表了一個沒有保存到數據庫的模型,只在內存中使用。這樣做的目的是讓我可以使用ActiveRecord的驗證功能。如何創建類的空實例?
型號
class NewsletterSignup < ActiveRecord::Base
attr_accessible :first_name, :last_name, :email, :zip
def self.columns()
@columns ||= [];
end
def self.column(name, sql_type = nil, default = nil, null = true)
columns << ActiveRecord::ConnectionAdapters::Column.new(name, default, sql_type, null)
end
def persisted?
false
end
column :first_name, :string
column :last_name, :string
column :email, :string
column :zip, :string
validates :first_name, :last_name, :email, :zip, :presence => true
validates :email, :format => /^[-a-z0-9_+\.]+\@([-a-z0-9]+\.)+[a-z0-9]{2,4}$/i
validates :zip, :format => /^\d{5}$/
end
管窺
<%= simple_form_for NewsletterSignup.new ... do |f| %>
<%= f.input :first_name, :label => "First Name:" %>
<%= f.input :last_name, :label => "Last Name:" %>
<%= f.input :email, :label => "Email:" %>
<%= f.input :zip, :label => "Zip:" %>
...
<% end %>
我想這樣的驗證工作,以空模型傳遞到窗體。但是,這給了我嘗試實例化一個NewsletterSignup
沒有提供屬性/值時出現錯誤:
::加載ActiveModel MissingAttributeError 缺少的屬性:FIRST_NAME
缺少什麼我在這裏?
你使用的是什麼版本的Rails? – depa