【发布时间】:2017-08-03 13:00:11
【问题描述】:
我的表单对象在验证用户名的唯一性时遇到问题,然后我搜索了有关如何在表单对象中使用唯一性验证的答案,然后我在这个问题中找到了答案
on an ActiveModel Object, how do I check uniqueness?
但不幸的是,在我创建了 UniquenessValidator 类之后,它在我的表单视图中返回了一个错误,
undefined method `new_record?' for #<UserForm:0x007fd40c42d258>
我如何解决这个错误,我使用的是 Rails 5.1
用户表单(user_form.rb):
class UserForm
include Virtus.model
extend ActiveModel::Naming
include ActiveModel::Conversion
include ActiveModel::Validations
attribute :username, String
attribute :password, String
attribute :company_name, String
validates :username, presence: { message: '%{attribute} is required'}
validates :password, presence: { message: '%{attribute} is required'}
validates :company_name, presence: { message: '%{attribute} is required'}
validates :password, length: { minimum: 6, message: '%{attribute} must me
minimum of 6 characters' }
validates :username, uniqueness: { case_sensitive: false, model: User, attribute: :username }
def persisted?
false
end
def save
if valid?
persist!
true
else
false
end
end
private
def persist!
@company = Company.create!(name: company_name)
@company.users.create!(username: username, password: password,
user_type: 'Owner')
end
end
【问题讨论】:
-
请在此处发布您的代码
-
我猜你没有模型
-
@MayurShah 我更新了我的帖子,我的表单对象的代码已包含在内
-
@Fallenhero 我有一个模型看看我的代码
-
没有。你没有模型。那看起来像
class UserForm < ActiveRecord::Base。我不知道你为什么要尝试includes。