Sha256: 1c094442a5fcc21da75c0782c5fae7427a53e37ffbf4e316a99b60ad6bf89f17

Contents?: true

Size: 1.39 KB

Versions: 4

Compression:

Stored size: 1.39 KB

Contents

#:nodoc:
module Sections
  #:nodoc:
  module Models
    ##
    # Model that represents a singe section entry. This model has the following
    # relations:
    #
    # * comments (one to many)
    # * custom field values (one to many), eager loads all custom fields
    # * categories (many to many)
    # * sections (many to one)
    #
    # The following plugins are loaded by this model
    #
    # * sluggable (source "title")
    # * timestamps
    #
    # @author Yorick Peterse
    # @since  0.1
    #
    class SectionEntry < Sequel::Model  
      one_to_many(
        :comments, 
        :class => "Comments::Models::Comment"
      )

      one_to_many(
        :custom_field_values, 
        :class => "CustomFields::Models::CustomFieldValue", 
        :eager => [:custom_field]
      )
      
      many_to_one(:user       , :class => "Users::Models::User")
      many_to_many(:categories, :class => "Categories::Models::Category")
      many_to_one(:section    , :class => "Sections::Models::Section")
      
      plugin(:sluggable , :source => :title     , :freeze => false)
      plugin(:timestamps, :create => :created_at, :update => false)
      
      ##
      # Specify our validation rules.
      #
      # @author Yorick Peterse
      # @since  0.1
      # 
      def validate
        validates_presence([:title, :status, :user_id])
        validates_presence(:slug) unless new?
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
zen-0.2.4.1 lib/zen/package/sections/lib/sections/model/section_entry.rb
zen-0.2.4 lib/zen/package/sections/lib/sections/model/section_entry.rb
zen-0.2.3 lib/zen/package/sections/lib/sections/model/section_entry.rb
zen-0.2 lib/zen/package/sections/lib/sections/model/section_entry.rb