在我的应用程序中,我向用户提供“订阅”主题。如果他们已经订阅,我希望能够显示自定义消息。
我使用 mongoid 在我的 Rails 模型中进行了唯一性验证。
class Subscription
include Mongoid::Document
include Mongoid::Timestamps
field :email, type: String
field :confirmed, type: Mongoid::Boolean, default: false
belongs_to :topic
validates_uniqueness_of :email
end
在我的控制器中,我正在评估可能的错误消息:
def subscribe
...
respond_to do |format|
if @subscription.save
...
else
format.html { redirect_to topic_url(@topic), alert: "Subscription was not created. #{@subscription.errors.full_messages[0]}" }
...
end
end
end
通过“@subscription.errors.full_messages[0]”返回的错误消息是:
我想将其更改为自定义消息,例如“您已经订阅了该主题”。
如何更改 mongoid 错误消息?我可以搜索并替换确切的字符串,但这对我来说似乎不太优雅。
试试这个。
# config/locales/en.yml
---
en:
mongoid:
errors:
models:
subscription:
already_subscribed: You are already subscribed to this topic
# app/models/subscription
class Subscription
include Mongoid::Document
include Mongoid::Timestamps
field :email, type: String
field :confirmed, type: Mongoid::Boolean, default: false
belongs_to :topic
before_validation :validate_uniqueness
def validate_uniqueness
return if self.class.where(email: email).none?
errors.add(:base, :already_subscribed)
end
end