Ruby on rails 未定义的“文本”方法&x27;对于nil:NilClass验证uniqness rails3 ruby 187

Ruby on rails 未定义的“文本”方法&x27;对于nil:NilClass验证uniqness rails3 ruby 187,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我刚刚从Rails2.3更新到3,我正在尝试用更干净的东西替换这个旧方法,因为它输出模型和字段名wtf 但是,当调用验证的唯一性(状态正常)时,我会出现上述错误。我传入了主id范围,但仍然得到了它。欢迎任何帮助 def validate if org_name.blank? errors.add(:org_name, :blank, :default => nil) else if (org = Organization.find_b

我刚刚从Rails2.3更新到3,我正在尝试用更干净的东西替换这个旧方法,因为它输出模型和字段名wtf

但是,当调用验证的唯一性(状态正常)时,我会出现上述错误。我传入了主id范围,但仍然得到了它。欢迎任何帮助

   def validate
     if org_name.blank?
       errors.add(:org_name, :blank, :default => nil)
     else
       if (org = Organization.find_by_org_name(org_name)) && org != self
         errors.add(:org_name, :taken, :default => nil, :value => org_name)
       end
     end
   end


这是Rails 3唯一性有效性语法:

验证:org\u name,唯一性:{scope::org\u id}

这很容易修复

首先,分析错误消息:

缺少组织名称翻译: en.activerecord.errors.models.user.attributes.org_name.blank

这是由以下代码行引起的:

errors.add(:org_name, :blank, :default => nil)
当您调用上面的代码时,您告诉rails要查找键为
:blank
的翻译。您可能还没有设置,所以要做到这一点,只需进入您的locales文件(config/locales/en.yml),并添加以下内容:

en:
  hello: "Hello world"
  activerecord:
    errors:
      models:
        organization:
          attributes:
            org_name:
              blank: "can't be blank." 
希望这能帮你解决问题

en:
  hello: "Hello world"
  activerecord:
    errors:
      models:
        organization:
          attributes:
            org_name:
              blank: "can't be blank."