在has_many关系中加载关系之前是否存在回调,或者可能是Proc

时间:2014-05-27 23:28:54

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

我使用Rails 3.2.18。这是一个复杂的行为,但我们有一个has_many关系说如下:

class Item < ActiveRecord::Base
  has_many :notes

...


class Note < ActiveRecord::Base
  belongs_to :item  
  attr_accessor :body, :is_enabled

我想做的是一个方法:

@note=Note.find(2)

项目对象(或可能是注释对象)可以在建立关系之前进行检查。具体来说,在我们的身体中,我们有一堆内容必须检查所有项目是否有效(比如说我们使用像ITEM2这样的短语,ITEM17用于项目#2或项目#17)。如果任何项目无效,则该注释应将is_enabled设置为false并且不加载。如何在加载笔记之前检查ITEM2的有效性?我希望回调或者包含一个宏的条件:

  has_many :notes, Proc.new { I don't know what to put here? }

THX

1 个答案:

答案 0 :(得分:0)

考虑到在数据库中设置了is_enabled标志,您可以定义多个关联,如:

has_many :notes #This will retrieve all notes
has_many :enabled_notes, :conditions => {:is_enabled => true}