Changeset 1129

Show
Ignore:
Timestamp:
08/19/07 12:22:22 (1 year ago)
Author:
alban
Message:

make Subscription#subscriber polymorphic

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/app/models/document.rb

    r1126 r1129  
    44        belongs_to :author, :class_name => "User", :foreign_key => "author_id" 
    55        has_one :upload, :dependent => :destroy 
    6         has_many :subscribers, :through => :subscriptions 
     6         
    77        has_many :subscriptions, :dependent => :destroy 
    88        has_many :cues, :dependent => :destroy 
     
    1616         
    1717        attr_protected :size, :length, :format, :file 
     18 
     19        def subscribers 
     20    self.subscriptions.collect { |s| s.subscriber } 
     21  end 
    1822         
    1923        def filename 
  • trunk/app/models/subscription.rb

    r1126 r1129  
    11class Subscription < ActiveRecord::Base 
    22        belongs_to :author, :class_name => "User", :foreign_key => "author_id" 
    3         belongs_to :subscriber, :class_name => "User", :foreign_key => "subscriber_id" 
     3        belongs_to :subscriber, :polymorphic => true 
    44        belongs_to :document 
    55         
  • trunk/app/models/user.rb

    r1128 r1129  
    1313        end 
    1414         
    15         has_many :subscriptions, :dependent => :destroy, :order => "created_at DESC", :foreign_key => "subscriber_id" do  
     15        has_many :subscriptions, :dependent => :destroy, :order => "created_at DESC", :as => "subscriber" do  
    1616                def find_by_tag(name, options = Hash.new) 
    1717                  options[:offset] = 0 if options[:offset] 
  • trunk/db/schema.rb

    r1108 r1129  
    33# then regenerate this schema definition. 
    44 
    5 ActiveRecord::Schema.define(:version => 20) do 
     5ActiveRecord::Schema.define(:version => 22) do 
    66 
    77  create_table "casts", :force => true do |t| 
     
    8787  end 
    8888 
    89   add_index "sessions", ["session_id"], :name => "sessions_session_id_index
     89  add_index "sessions", ["session_id"], :name => "index_sessions_on_session_id
    9090 
    9191  create_table "subscriptions", :force => true do |t| 
    92     t.column "document_id",    :integer,                 :null => false 
    93     t.column "author_id",      :integer,                 :null => false 
    94     t.column "subscriber_id",  :integer,                 :null => false 
    95     t.column "download_count", :integer,  :default => 0 
    96     t.column "created_at",     :datetime 
     92    t.column "document_id",     :integer,                  :null => false 
     93    t.column "author_id",       :integer,                  :null => false 
     94    t.column "subscriber_id",   :integer,                  :null => false 
     95    t.column "download_count",  :integer,  :default => 0 
     96    t.column "created_at",      :datetime 
     97    t.column "subscriber_type", :string,   :default => "", :null => false 
    9798  end 
    9899 
     
    107108 
    108109  create_table "users", :force => true do |t| 
    109     t.column "username",     :string,   :default => "",    :null => false 
    110     t.column "password",     :string,   :default => "",    :null => false 
     110    t.column "username",     :string,   :default => "" 
     111    t.column "password",     :string,   :default => "" 
    111112    t.column "name",         :string,   :default => "",    :null => false 
    112113    t.column "email",        :string,   :default => "",    :null => false