16: def is_publishable(options={})
17: @is_publishable = true
18: extend ClassMethods
19: include InstanceMethods
20:
21: attr_accessor :publish_on_save
22:
23: after_save :publish_for_non_versioned
24:
25: named_scope :published, :conditions => {:published => true}
26: named_scope :unpublished, lambda {
27: if versioned?
28: { :joins => :versions,
29: :conditions =>
30: "#{connection.quote_table_name(version_table_name)}.#{connection.quote_column_name('version')} > " +
31: "#{connection.quote_table_name(table_name)}.#{connection.quote_column_name('version')}",
32: :select => "distinct #{connection.quote_table_name(table_name)}.*" }
33: else
34: { :conditions => { :published => false } }
35: end
36: }
37:
38: end