当它成立时,Rails模型函数会变为false

时间:2012-06-09 01:51:04

标签: ruby-on-rails ruby-on-rails-3 model

我有一个模型和一个函数来检查它是否有效。事情是它总是返回虚假,即使它是真的。

这是功能:

def is_valid?
  if self.active == true && (self.end_date.nil? || self.end_date >= Time.now)
    return true
  else
    return false
  end
end

这是控制台输出:

1.9.2p320 :013 > sd.active == true
 => true 
1.9.2p320 :014 > sd.end_date.nil?
 => false 
1.9.2p320 :015 > sd.end_date >= Time.now
 => true 
1.9.2p320 :016 > (sd.end_date.nil? || sd.end_date >= Time.now)
 => true 
1.9.2p320 :017 > sd.active && (sd.end_date.nil? || sd.end_date >= Time.now)
 => true 
1.9.2p320 :018 > sd.is_valid? 
 => false 
1.9.2p320 :019 > sd
 => #<SubscriptionDiscount id: 1, title: "Prueba de descuento", code: "TEST1",     monthly_discount: #<BigDecimal:902f748,'0.1E2',9(18)>, yearly_discount: #<BigDecimal:902f4f0,'0.1E3',9(18)>, active: true, end_date: "2012-08-01 00:00:00", created_at: "2012-06-06 00:04:10", updated_at: "2012-06-08 21:57:06"> 

为什么它不起作用?我没有看到它。

请帮助!

1 个答案:

答案 0 :(得分:0)

让我们从简化

开始
def is_valid?
  active? && (end_date.nil? || end_date >= Time.now)
end

它还在吹app吗?

如果是,请填写以下内容:

def is_valid?
  p active?
  p end_date.nil?
  p end_date >= Time.now
  active? && (end_date.nil? || end_date >= Time.now)
end

并分享输出。