Ruby on rails 唯一性验证器返回未定义的方法“new_record?”

Ruby on rails 唯一性验证器返回未定义的方法“new_record?”,ruby-on-rails,validation,Ruby On Rails,Validation,我的表单对象在验证用户名的唯一性方面有问题,然后我搜索了关于如何在表单对象中使用唯一性验证的答案,然后我找到了这个问题的答案 但不幸的是,在我创建UniquenessValidator类之后,它在我的表单视图中返回了一个错误 未定义的方法“新建_记录” 我使用Rails 5.1,如何解决此错误 UserForm user_form.rb: 新唱片?方法来自ActiveRecord::Persistence模块。我怀疑您是否可以简单地包含它,因为您的模型不是ActiveRecord::Base的典

我的表单对象在验证用户名的唯一性方面有问题,然后我搜索了关于如何在表单对象中使用唯一性验证的答案,然后我找到了这个问题的答案

但不幸的是,在我创建UniquenessValidator类之后,它在我的表单视图中返回了一个错误

未定义的方法“新建_记录”

我使用Rails 5.1,如何解决此错误

UserForm user_form.rb:


新唱片?方法来自ActiveRecord::Persistence模块。我怀疑您是否可以简单地包含它,因为您的模型不是ActiveRecord::Base的典型子类

这里有一个快速而肮脏的解决方案,可以满足您的需要:

validates :username, if: :new_username?

# ...

private

def new_username?
    User.where(username: username).empty?
end

请注意,只有在创建新用户时,此选项才能正常工作。更新现有用户将始终失败。根据您发布的代码,您似乎正在使用此模型。

请在此处发布您的代码我猜您没有model@MayurShah我更新了我的帖子,我的表单对象的代码已经更新included@Fallenhero我有一个模型看看我的代码。你没有模特儿。这看起来像类UserFormvalidates :username, if: :new_username? # ... private def new_username? User.where(username: username).empty? end