ale*_*lex 18 validation ruby-on-rails
我有一个User类,以及Contact是User的子类的Contact.这两个类都存储在users表中.
我的联系人可能有也可能没有电子邮件地址,而我的用户需要一个电子邮件地址(validates_presence_of :email我的用户模型定义中有).
我的理由是,用户输入联系人,以后可能会在用户声明其个人资料时成为用户.
validate_presence_of email
联系人模型中的
验证?(我在轨道2.3.8)
谢谢!
更新:
似乎单表继承旨在完全满足我的需要
跳过我的Contact表的电子邮件验证的正确方法如下:
validates_presence_of :email, :unless => Proc.new {|user| user.type == "Contact"}
Chu*_*ebs 22
听起来你应该将User和Contacts抽象为两个表,而不是试图将它们合并为一个.虽然联系人可以成为用户,但这并不意味着他们会(我认为?).
这也可以解决您的validate_presence_of :email问题,因为联系人表/模型甚至没有该字段.我相信,这也可以减轻以后潜在的性能问题.您不希望有大量的联系人来排序以查找注册用户.
如果你已经死在一张桌子上,我相信你可以做如下的事情:
validates_presence_of :email, :unless => Proc.new {|user| user.type == "Contact"}
这假设您有一个user_type列,但您可以替换它,具体取决于您如何确定a是否User为a Contact.
更新:
这是您正确验证模型的方法:validates_presence_of从模型中删除并将其放在此块内:
with_options :unless => :user_type == "contact" do |user|
user.validates_presence_of :email
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7578 次 |
| 最近记录: |