ruby on rails length レール上のルビー: エラー.add_to_base 対エラー.
model validation (2)
私は、errors.add_to_baseはオブジェクトに関連付けられたエラーに使用されるべきであり、特定の属性ではないことを読んでいます。 私はこれが何を意味するのかを概念化するのに問題があります。 誰かが私がそれぞれを使いたいときの例を提供できますか?
たとえば、バンドモデルがあり、各バンドにはジャンルがあります。 ジャンルの存在を検証するときに、エラーがベースに追加されると、ジャンルが見つからない場合はどうなりますか?
より多くの例がより良い
ありがとうございました!
https://ffff65535.com
(これは検索エンジンに表示されているので、これは私が見つけた方法であることに注意してください)、これは推奨されなくなりました。 Railsのやり方は次の3つです。
errors[:base] << "Error message"
または
errors.add(:base, "Error message")
http://apidock.com/rails/ActiveRecord/Errors/add_to_base
http://apidock.com/rails/v3.2.8/ActiveModel/Errors/add
この例では、フィールドの有効性を確認することができます(チームを選択する必要があります)。 そして、あなたはクラス/ベースレベルのバリデーションを見ることができます。 たとえば、連絡先、電話番号、電子メールの少なくとも1つの方法が必要でした。
class Registrant
include MongoMapper::Document
# Attributes ::::::::::::::::::::::::::::::::::::::::::::::::::::::
key :name, String, :required => true
key :email, String
key :phone, String
# Associations :::::::::::::::::::::::::::::::::::::::::::::::::::::
key :team_id, ObjectId
belongs_to :team
...
# Validations :::::::::::::::::::::::::::::::::::::::::::::::::::::
validate :validate_team_selection
validate :validate_contact_method
...
private
def validate_contact_method
# one or the other must be provided
if phone.empty? and email.empty?
errors.add_to_base("At least one form of contact must be entered: phone or email" )
end
end
def validate_team_selection
if registration_setup.require_team_at_signup
if team_id.nil?
errors.add(:team, "must be selected" )
end
end
end
end