私はClearanceをAWS Dynamoとバックエンドストアとして連携させようとしています。私が抱えている問題は、ではなく、にクリアランスを得ることができないということです。これは、SQLクエリを介して標準ActiveRecord一意性検証を行うことができないため、行うことができません。クリアランスで電子メールの検証を無効にするには
the comments in the codeによると、私は私のUser
オブジェクトリターンemail_optional?
true
を持つことができるはず、それは電子メールの一意性の検証を無効にする必要があります。だから私は持っている:
class User < ApplicationRecord
include Dynamoid::Document
include Clearance::User
field :name
field :email
def email_optional?
puts 'yes, email is optional'
true
end
end
しかし、私は、ユーザー、私はエラーを取得し、かつ、ポイントへの多くを作成しようとすると、puts
が実行されていません。
$ rails c
Running via Spring preloader in process 18665
Loading development environment (Rails 5.1.3)
irb(main):001:0> u = User.new(name: 'ijd', email: '[email protected]', password: 'test')
ActiveRecord::StatementInvalid: Could not find table 'editor_development_users'
from (irb):1
更新:からの応答を@spickermannは、ActiveRecord::Base
をサブクラス化せずに(ApplicationRecord
を介して)試みたことに気づくべきであることを私に思い出させました。それは別のエラーを与える:
class User
include Dynamoid::Document
....
irb(main):002:0> reload!
Reloading...
=> true
irb(main):003:0> u = User.new(name: 'ijd', email: '[email protected]', password: 'test')
ArgumentError: Unknown validator: 'UniquenessValidator'
from app/models/user.rb:4:in `include'
from app/models/user.rb:4:in `<class:User>'
from app/models/user.rb:2:in `<top (required)>'
from (irb):3
感謝を。私は元の返信で既にそれを試したことを言及していたはずですが、別のエラーが発生します。上記の投稿を更新しました。 –
@IanDickinson TIL 'UniquenessValidator'は 'ActiveModel :: Validations'の一部ではありません。更新された質問の問題に対処するために私の答えを更新しました。 – spickermann