mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
65 lines
1.4 KiB
Ruby
Executable file
65 lines
1.4 KiB
Ruby
Executable file
class Topic < ActiveRecord::Base
|
|
named_scope :base
|
|
named_scope :written_before, lambda { |time|
|
|
{ :conditions => ['written_on < ?', time] }
|
|
}
|
|
named_scope :approved, :conditions => {:approved => true}
|
|
named_scope :replied, :conditions => ['replies_count > 0']
|
|
named_scope :anonymous_extension do
|
|
def one
|
|
1
|
|
end
|
|
end
|
|
module NamedExtension
|
|
def two
|
|
2
|
|
end
|
|
end
|
|
module MultipleExtensionOne
|
|
def extension_one
|
|
1
|
|
end
|
|
end
|
|
module MultipleExtensionTwo
|
|
def extension_two
|
|
2
|
|
end
|
|
end
|
|
named_scope :named_extension, :extend => NamedExtension
|
|
named_scope :multiple_extensions, :extend => [MultipleExtensionTwo, MultipleExtensionOne]
|
|
|
|
has_many :replies, :dependent => :destroy, :foreign_key => "parent_id"
|
|
serialize :content
|
|
|
|
before_create :default_written_on
|
|
before_destroy :destroy_children
|
|
|
|
def parent
|
|
Topic.find(parent_id)
|
|
end
|
|
|
|
# trivial method for testing Array#to_xml with :methods
|
|
def topic_id
|
|
id
|
|
end
|
|
|
|
protected
|
|
def approved=(val)
|
|
@custom_approved = val
|
|
write_attribute(:approved, val)
|
|
end
|
|
|
|
def default_written_on
|
|
self.written_on = Time.now unless attribute_present?("written_on")
|
|
end
|
|
|
|
def destroy_children
|
|
self.class.delete_all "parent_id = #{id}"
|
|
end
|
|
|
|
def after_initialize
|
|
if self.new_record?
|
|
self.author_email_address = 'test@test.com'
|
|
end
|
|
end
|
|
end
|