2

Rails 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
4

2 に答える 2

1

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

:org_name、一意性を検証します: {scope: :org_id}

于 2012-10-26T05:22:29.667 に答える
0

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

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

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

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

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

上記を呼び出すと、キーが である翻訳を探すように Rails に指示されます:blank。まだ設定していない可能性があります。そのためには、ロケール ファイル (config/locales/en.yml) に移動し、次の行を追加します。

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

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

于 2012-10-26T05:45:17.630 に答える