【问题标题】:How to validate a parent model attributes during creation of child model's object?如何在创建子模型对象期间验证父模型属性?
【发布时间】:2011-06-21 13:32:44
【问题描述】:

我有一个父模型(用户),其中包含可选字段 - first_name、last_name 和必填字段 - 电子邮件和密码。我有一个“belongs_to”到“用户”和“accepts_nested_attributes_for :user”的子模型(预订)。我的问题是,每当创建预订对象时,我都需要验证正在创建/更新的用户是否存在 first_name 和 last_name。基本上,此人在创建预订对象时需要输入 first_name 和 last_name。我在许多其他地方使用了“用户”模型作为父模型,但我不想在“用户”模型中添加验证。我想要在“预订”模型中进行验证。 我如何做到这一点?

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    如果你使用 validates_associated,它会验证关联的模型

    class Booking
      belongs_to :user
    
      validates_associated :user
    end
    

    额外功劳:http://rpheath.com/posts/412-a-better-validates-associated 在您的错误消息中获得的信息比“用户无效”更多

    【讨论】:

    • 感谢您的帮助,但此验证对我没有帮助。
    • 感谢您的帮助,但此验证对我没有帮助。当我添加“验证关联:用户”时,它会为我接受“用户”值的表单提供 ActionView::Template::Error(NilClass:Class 的未定义方法“validators_on”)。
    • 我也尝试过使用“accepts_nested_attributes_for :user, :reject_if => proc {|u| u['first_name'].blank?}”,但这也不起作用。
    • 您的用户类中的某些代码看起来很糟糕。您可以发布您的用户类(验证方法),或者尝试删除它们,直到找到失败的验证器。
    • 用户{has_many :feedbacks} 反馈 {belongs_to :user,accepts_nested_attributes_for :user}。用户(名字,姓氏,电子邮件,*密码)。反馈(*评论)。 '' 字段 r 为必填项。反馈表接受名字、姓氏、电子邮件和评论。
    猜你喜欢
    • 1970-01-01
    • 2016-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多