Rails Active Record Validation条件库

时间:2011-10-03 07:05:47

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

class Material < ActiveRecord::Base
  belongs_to :material_type
  belongs_to :product_review
  validates :url, :presence => true, :if => :url_presence?
  validates :video, :presence => true, :if => :video_presence?
  def url_presence?
    if !self.title.blank? and self.material_type.title.eql? :url
      true
    end
  end

  def video_presence?
    if !self.title.blank? and self.material_type.title.eql? :video
      true
    end
  end


  has_attached_file :video,
                    :url => "/system/video/:id/:attachment/:style/:basename.:extension",
                    :path => ":rails_root/public/system/video/:id/:attachment/:style/:basename.:extension",
                    :default_url => "/image/video.png"
end

我假设它发现标题字段为填充且material_type为url而不是对url字段存在验证检查执行验证,但它没有帮助

1 个答案:

答案 0 :(得分:1)

我认为你需要比较字符串,而不是符号。

validates :url, :presence => true, :if => :url_present?
validates :video, :presence => true, :if => :video_present?

def url_present?
  self.title.present? and self.material_type.title == "url"
end

def video_present?
  self.title.present? and self.material_type.title == "video"
end