如何验证范围为枚举值的字段的唯一性



我有一个消息表,该表具有枚举字段type_of_message[:p rivate,:p ublic]并且属于用户,我想验证用户只能发送一条公共消息。

validates_uniqueness_of :user, scope: :type_of_comment[:review]

您可以简单地使用:

validates_uniqueness_of :user, scope: :type_of_message

例如,如果您只想对特定type_of_message进行验证,我建议您为其编写自定义验证。

validate :one_public_comment_per_user, on: :create
private
def one_public_comment_per_user
if user.present? && user.messages.public.present?
errors.add(:base, "only one public comment is allowed per user.")
end
end

我只是通过以字符串而不是符号的形式传递审查来让它工作。validates_uniqueness_of :user, scope: :type_of_comment['review']

最新更新