/ 未定義のメソッド `text? ' nilの場合:NilClass一意性の検証rails 3 ruby​​ 187 - ruby​​-on-rails、ruby-on-rails-3

未定義のメソッド `text? '無しの場合:NilClass uniqness rails3の検証ruby 187 - ruby​​-on-rails、ruby-on-rails-3

私はレール2.3から3にアップデートしたところですが、モデルとフィールド名、wtfを出力するので、この古いメソッドをもっときれいなものに置き換えようとしています。

ここに画像の説明を入力

しかし、私は呼び出すときに上記のエラーが出 validates_uniqueness_of (プレゼンスはうまくいきます)。私はプライマリ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

validates :org_name, :presence => true
validates_uniqueness_of :org_name, :scope => :org_id

回答:

回答№1は1

これは、一意性検証のためのRails 3構文です。

検証:org_name、一意性:{scope::org_id}


回答№2の場合は0

これは簡単に修正できます。

まず、エラーメッセージを分析します。

組織名の翻訳が見つかりません: en.activerecord.errors.models.user.attributes.org_name.blank

これは、次のコード行が原因です。

errors.add(:org_name, :blank, :default => nil)

上記を呼ぶとき、あなたはレールがそのキーがである翻訳を探すように言っています :blank。まだ設定していないかもしれません。そのためには、ロケールファイル(config / locales / en.yml)にアクセスして、以下を追加してください。

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

うまくいけば、それはあなたのためにそれを修正します。