我可以在Rails i18n模型验证消息中使用记录本身吗?

时间:2017-06-14 21:22:19

标签: ruby-on-rails activerecord internationalization

我想提供一个有用的:长度验证消息,告诉用户当前值有多长。我想说的是,“请将邮件限制为100个字符;目前您有152个字符。”

而不是“请将邮件限制为100个字符”。

但是,在翻译错误消息时,Rails i18n似乎没有使记录本身可用于内省。有没有办法为ActiveRecord模型实现如下的i18n消息?

NSPredicate.init(format: "id in %@", ids)

当我这样做时,Rails拒绝插入“%{value.length}”并将其传递出来。

1 个答案:

答案 0 :(得分:1)

我认为它可以帮到你:

# models/record.rb
class Record < ApplicationRecord
  validates :field, length: { 
    maximum: MAXIMUM_CHARS,
    too_long: I18n.t("errors.messages.too_long",
                count: MAXIMUM_CHARS, current_length: @record.title.length) }
end

# en.yml
too_long: "Maximum %{count} characters. You currently have %{current_length} characters."