問題タブ [validates-uniqueness-of]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
187 参照

ruby-on-rails - ActiveRecord `unscoped` は異なるデータベースから同じ名前のモデルを返します

更新:さて、Rails をデバッグしたところ、両方のテーブルの名前が同じであることが原因であることがわかりました。

validates_uniquness_ofunscopedモデルのクラスを呼び出します。unscoped従来のテーブルからすべての行を返します。

元の投稿:ある Rails アプリケーションから別の Rails アプリケーションへのレガシー データの移行を作成しています (両方の DB は Postgresql です)。

私の新しいアプリケーションにはvalidates_uniqueness_of、モデルの 1 つの検証があります。

ここで説明したように、レガシー DB への接続を確立するレガシー モデル クラスを作成しました ( を使用establish_connection :legacy)。アプリケーション レベルの移行中に、レガシー テーブルからモデル データをコピーして、新しいアプリケーションに行ごとに新しいモデルを作成します。一意性の検証が失敗するため (新しい DB がまだ空であっても)、最初のモデル作成でプロセスが失敗します。

validates_uniqueness_ofこれは、何らかの理由でレガシーDBも考慮に入れていると信じています。

検証を行ったモデルのテーブルは、従来のデータベースと新しいデータベースの両方で同じ名前を持っています。

0 投票する
1 に答える
207 参照

ruby-on-rails - 一致する既存のレコードの 1 つの属性が特定の値と等しくない場合にのみ 2 つの属性にスコープを設定した場合、validate_uniqueness_of をどのようにすればよいですか?

Invitationサブスクリプションへの招待を表すモデルがあります。一致する/を持つ他のレコードにもofがない限り、特定の/の組み合わせInvitationを持つ特定の時点で1 つだけ存在する必要があります。emailsubscription_idemailsubscription_idstate'declined'

email と subscription_id の組み合わせが一意であることを考えると、現在、一意性を検証できます。

私のInvitationモデル:

Rspec (パス):

stateただし、データベース内の一致するモデルが に等しい場合、一意性チェックをスキップしたいと思います'declined'

既存のモデルの状態が「不承認」の場合、検証に合格する必要があります。

最初に頭に浮かぶのは次のことです。

しかし、新しく作成されたモデルの状態が「拒否」されているかどうかを確認するため、これは間違っています。以前の既存のレコードの状態が'declined'.

私もこれを試しました:

しかし、それは私が想定していることと同じ理由で失敗します。

追加のスコープをチェックする検証をどのように記述しますか?


次のようなものを書きたいと思いますが、これは私の考えを説明するための構文です。


アップデート:

私はこれを行いましたが、うまくいきました:

0 投票する
1 に答える
550 参照

ruby-on-rails-4 - validates_uniqueness_of の Rspec テストが失敗するはずの場合に合格する

私はRspecテストにかなり慣れていないので、これは非常にイライラします。

validates_uniqueness_ofを使用して重複するエントリが作成されないようにするモデルがあります。(これは保証されておらず、推奨される方法はデータベース レベルの制約を使用することですが、現時点では関係ありません)。

問題は、実際にはコンソールとアプリ自体でこれを行うことはできませんが、私の Rspec テストでは、同じ user_id と board_id を持つテーブルに 2 つのエントリを作成できることが示されているようです。

models/moderator_join.rb

仕様/モデル/moderator_join_spec.rb

コンソール出力

0 投票する
1 に答える
1554 参照

ruby-on-rails - 一意性のrspecモンゴイド検証

User モデルの一意性をテストしたいと思います。

私のUserモデルクラスは次のようになります:

モデルに属する私の rspec テストは次のようになります。

実行bundle exec rspecした後、成功して渡されるのではなく、常に次のエラーが発生します。

これを使用すると、成功します。

を使用したいと思いますexpect(...)。誰でも私を助けることができますか?

0 投票する
2 に答える
289 参照

ruby-on-rails - MongoId 複合一意性インデックス

私は3つのモデルを持っています

1 人の人間は複数の Org に所属できますが、1 つの OrgGroup にしか所属できません。

組織内の人間の一意性インデックスを設定する必要があります。

どうすればこれを行うことができますか?