我想爲Comment模型進行自定義驗證:未註冊的用戶在提交註釋時不應使用註冊用戶的電子郵件。使用助手方法進行自定義驗證
我把自定義的驗證類app/validators/validate_comment_email.rb
:
class ValidateCommentEmail < ActiveModel::Validator
def validate(record)
user_emails = User.pluck(:email)
if current_user.nil? && user_emails.include?(record.comment_author_email)
record.errors[:comment_author_email] << 'This e-mail is used by existing user.'
end
end
end
在我的模型文件app/models/comment.rb
:
class Comment < ActiveRecord::Base
include ActiveModel::Validations
validates_with ValidateCommentEmail
...
end
的問題是,我使用current_user
方法從我sessions_helper.rb
:
def current_user
@current_user ||= User.find_by_remember_token(cookies[:remember_token])
end
Validator無法看到th是方法。我可以在Validator類中包含sessions_helper,但它給了我一個關於cookie方法的錯誤。這是一條無路可走的道路。 那麼如何使這個自定義驗證軌道的方式?
可以將評論直接與用戶相關聯(除了author_email)嗎? – PinnyM
我想通過調用'current_user.nil?'來確保註釋的用戶沒有註冊。難以檢查評論記錄是否有關聯用戶?這樣你就不需要'current_user'。 – mario
如果現有用戶提交的評論,它直接與用戶關聯。但我想檢查一下未註冊用戶是否使用註冊用戶的電子郵件。所以我需要檢查這個用戶:1.沒有登錄; 2.他的電子郵件不在註冊電子郵件列表中。 –