Ruby on rails 如何防止属性成为特定值?

Ruby on rails 如何防止属性成为特定值?,ruby-on-rails,validation,Ruby On Rails,Validation,我有一个属性为“Username”的模型“User”。我可以使用验证来防止使用用户名“home”创建用户吗 class用户

我有一个属性为“Username”的模型“User”。我可以使用验证来防止使用用户名“home”创建用户吗

class用户
您可以使用:

如果要跨多个模型重用此功能,也可以编写一个。您可以使用:


如果您打算在多个模型中重复使用此功能,您也可以编写一个脚本。

请您解释一下“冻结”方法在此上下文中的作用?@JoeMorano它可以防止修改常量的值。Ruby在为常量赋值时会发出警告,但它不会阻止您修改这些值,这通常是不可取的。你能解释一下“冻结”方法在这个上下文中完成了什么吗?@JoeMorano它阻止修改常量的值。Ruby在为常量赋值时会发出警告,但它不会阻止您修改这些值,这通常是不可取的。
class User < ActiveRecord::Base
  validates :username, presence: true
end
class User < ActiveRecord::Base
  USERNAME_BLACKLIST = ['home'].freeze

  validates :username, presence: true, exclusion: { in: USERNAME_BLACKLIST }
end
class User < ActiveRecord::Base
  validates :username, presence: true

  validate :username_not_on_restricted_list

  protected

  def username_not_on_restricted_list
    errors.add(:username, :invalid) if username == 'home'
  end
end