2

私の検証では、create メソッドで「メールは既に取得されています」というエラーが発生します。

Customer モデルに次の検証があります。

validates :email, :uniqueness => {:scope => :account_id, :case_sensitive => false} 

これは私のログに表示されているものです:

Customer Load (0.4ms)  SELECT `customers`.* FROM `customers` WHERE `customers`.`account_id` = 2 AND `customers`.`email` = 'xxxxx@gmail.com' LIMIT 1
(0.1ms)  BEGIN
Customer Exists (0.8ms)  SELECT 1 AS one FROM `customers` WHERE `customers`.`email` = BINARY 'xxxxx@gmail.com' LIMIT 1
Customer Exists (0.3ms)  SELECT 1 AS one FROM `customers` WHERE (`customers`.`email` = 'xxxxx@gmail.com' AND `customers`.`account_id` = 2) LIMIT 1
(0.2ms)  ROLLBACK

助けてくれてありがとう。

4

1 に答える 1

0

あなたの範囲は、電子メール検索を特定の account_id (= 2) に絞り込んでいます。これが意図した動作かどうかはわかりませんが、他のアカウント ID も検索する場合は、スコープを削除する必要があります。

入力した電子メールは既に使用されているため、検証は失敗しています。したがって、彼らはあなたがやるように言ったことを正確にやっています...

于 2012-07-11T06:24:14.030 に答える