Railsのタイプtext
属性の行数/テキスト行数を制限する方法はありますか? Rails検証で行/テキスト行の数を制限する方法は?
validates :message, :length => { :maximum => 100 }
しかし、どのように行数は?
ありがとうございました。
Railsのタイプtext
属性の行数/テキスト行数を制限する方法はありますか? Rails検証で行/テキスト行の数を制限する方法は?
validates :message, :length => { :maximum => 100 }
しかし、どのように行数は?
ありがとうございました。
を読むことができますこれを行うためのカスタム検証を書くことはかなり簡単です。これを行うにはvalidate
(ないvalidates
)を使用します。
validate :not_too_many_lines
private
def not_too_many_lines
if self.message.split("\n").length > 10
self.errors.add :message, "has too many lines"
end
end
errors
はそれで何かを持っているかどうかをチェックし、これがvalid?
前に実行されるボンネットの下で。無効なレコードを保存しようとした後に<record>.errors.full_messages
を実行した場合、「メッセージの行が多すぎます」と表示されます。あなたが使用できる "あまりにも多くの行"と言うだけの場合self.errors.add :base, "too many lines"
カスタムバリデータを作成して、必要なロジックを実装することができます。以下の考え方に沿って何かがトリックを行う必要があり、次のよう
class LinesValidator < ActiveModel::EachValidator
def validate_each(record, attribute, value)
lines = value.split("\n")
if lines.size > options[:maximum]
record.errors[attribute] << "too many lines"
end
if lines.any? { |l| l.size > options[:length]}
record.errors[attribute] << "line longer than allowed length"
end
end
end
と使用方法は、次のようになります。検証とカスタムバリデータに関する詳細については
validates :message, lines: { maximum: 5, length: 10}
を、あなたはrails docs
行の長さには制限がありますか? – Aegis
まだありません。しかし、それを制限することも良いでしょう。 – Tintin81
答えはどれですか? – Aegis