首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模型中的validate_presence_of中的Rails设置或条件?

模型中的validate_presence_of中的Rails设置或条件?
EN

Stack Overflow用户
提问于 2010-06-03 10:14:54
回答 2查看 164关注 0票数 1

在rails模型中,可以这样做吗?

代码语言:javascript
复制
class Example < ActiveRecord::Base
  #associations  

  validates_presence_of :item_id, (:user_id OR :user_email)

  #functions
end

其中模型有3列:item_id:user_id:user_email?只要我有:user_id:user_email,我就希望模型有效。

想法是,如果该项目是推荐给一个人谁是目前没有注册,它可以通过电子邮件地址相关联的时候,推荐的人注册。

或者有没有不同的方法可以代替呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-06-03 10:29:16

一种方法是将这些字段包装为虚拟属性,例如:

代码语言:javascript
复制
class Example < ActiveRecord::Base

  validates_presence_of :referral

  def referral
    user_id || user_email
  end
end

或者,您可以直接抛出一个自定义的validate验证方法。查看Rails API上的自定义验证

如果user_id和user_email都来自另一个模型,那么添加关联可能更好

代码语言:javascript
复制
class Example
  belongs_to :user
  validates_associated :user

  before_validate :build_user_from_id_or_email

  def build_user_from_id_or_email
    # ... Find something with the parameters
  end
end
票数 1
EN

Stack Overflow用户

发布于 2010-06-03 10:33:46

代码语言:javascript
复制
validates_presence_of :item_id
validates_presence_of :user_id,    :if => Proc.new{ |x| x.user_email.blank? }
validates_presence_of :user_email, :if => Proc.new{ |x| x.user_id.blank? }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2962921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档