如何使用布尔逻辑validate_presence_of?

时间:2008-12-19 06:16:50

标签: ruby-on-rails

假设我将验证代码输入到我的多语言发布数据库模型中。数据库需要特定期刊的英文或日文标题。所以我需要至少有两个中的一个来验证_presence_of。现在我可以很容易地检查两者是否存在,但我对“至少一个”的情况感到困惑:

class Article < ActiveRecord::Base
  belongs_to :publication
  validate_presence_of :journal_title
  validate_presence_of :journal_title_ja
end

我认为这可能需要一个如下声明:

:if => :jornal_title_ja is nil

2 个答案:

答案 0 :(得分:5)

class Article < ActiveRecord::Base  
  belongs_to :publication  
  validate_presence_of :journal_title, :if => :check_japanese  
  validate_presence_of :journal_title_ja, :if => :check_english

  def check_japanese
    journal_title_ja.nil?
  end

  def check_english
    journal_title.nil?
  end
end

这应该有效。希望我能直接得到这个问题。

观看episode no. 41 on railscasts以便更好地理解

答案 1 :(得分:0)

我之前没有编写过一行Ruby,但是我今天碰巧在我的Rails书中偶然发现了这一点 - 抱歉,如果没有任何帮助,那就完全错了!语法几乎肯定会是:

class Article < ActiveRecord::Base
 belongs_to :publication

 if journal_title.nil? && journal_title_ja.nil?
  flunk("must have a japanese or english title") 
 end
end

Stack上的第一篇文章! :d