我是 ruby 和 rails 的新手;我在我的 rails 3 应用程序中使用了以下 ruby 类定义。此类仅用作在我的提交视图中填充的联系信息的属性容器(form_for)。我读了一篇文章,您可以在其中直接使用 ActiveModel 而不是 ActiveRecord 来执行验证,所以我正在尝试。当我检查对象是否有效时出现以下异常?在我的回发控制器中。我认为这有效吗?如果我包含 ActiveModel::Validations 将可用;也许我正在向后做一些其他的事情。任何帮助,将不胜感激:
未定义的方法“有效吗?” 为了 #
这是我的类定义,再往下是我在控制器操作中如何处理它:
require 'active_model'
class ContactModel
extend ActiveModel::Naming
include ActiveModel::AttributeMethods
include ActiveModel::Validations
include ActiveModel::Conversion
validates_presence_of :first_name, :last_name, :email_address, :email_address_confirmed, :subject, :contact_message
attr_accessor :first_name, :last_name, :email_address, :email_address_confirmed,
:telephone_number, :subject, :contact_message
只是搞乱测试。
validates_each :first_name, :last_name do |record, attr, value|
record.errors.add attr, 'starts with z.' if value.to_s[0] == z
end
...
end
在我的控制器/动作中......
def send_email
#@contact_model = ContactModel.new().initialize_copy(params[:contact_model])
@contact_model = params[:contact_model].dup
respond_to do |format|
if (@contact_model.valid?)
# Tell the UserMailer to send a welcome Email after save
ContactMailer.contact_email(@contact_model).deliver
format.html { redirect_to(@contact_model, notice: 'Email successfully sent.') }
format.json { render json: @contact_model, status: :created, location: @contact_model }
else
# What to do here?
end
end
end