Rails ActiveRecord查询 - 如何创建复杂的多关系条件查询?

时间:2015-04-07 23:09:00

标签: ruby-on-rails ruby activerecord

我试图弄清楚如何在我的模型中使用自定义方法查询我的数据库。据我所知,这是不可能的,所以我正在寻找其他想法。

挑战在于我需要找到至少有一个关系条件为真的模型的所有记录。例如,假设我有一个Notebook记录,我需要找到至少修改过其中一个相关对象的Notebook个实例。我们假设Notebookfront_coverback_coverinterior_pagesinterior_folders。在我的Notebook模型类中,我有这种方法:

class Notebook < ActiveRecord::Base
  has_one :front_cover
  has_one :back_cover
  has_many :interior_pages
  has_many :interior_folders
  ...
  def modified?
    if !front_cover.modified? or !back_cover.modified? or !interior_pages.empty? or !interior_folders.empty?
      return true
    end
    false
  end
  ...
end

front_coverback_cover中修改后的方法可能会有自己的关系,也会检查:

class FrontCover < ActiveRecord::Base
  has_one :cover_graphic
  has_many :ring_holes
  belongs_to :notebook
  ...
  def modified?
    modified = false
    if (!cover_graphic.nil? and !cover_graphic.url.nil?) or !ring_holes.empty?
      modified = true
    end        
    modified
  end
end

我真的不确定如何构建这样的条件检查作为查询。有什么想法吗?

0 个答案:

没有答案