私はレール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."
うまくいけば、それはあなたのためにそれを修正します。