, , , , jystewart rails 3 act_as_polymorphs gem
:
, , , . 6 (post.rb, snippet.rb, code.rb. text.rb, image.rb video.rb)
, , , 4- .
Single Table Inheritance, (, , ), , , , , , , , .
, . , , - , . . , 4- . . .
m.onkey.org - , , act_as_polymorphs.
, :
- 6 , ActiveRecord:: Base
has_many_polymorphs- , "snippetable" .
:
class Post < ActiveRecord::Base
has_many_polymorphs :snippets, :from => [:codes, :texts, :videos, :images], :through => :snippets
end
class Snippet < ActiveRecord::Base
belongs_to :snippetable, :polymorphic => true
end
class Code < ActiveRecord::Base
end
class Text < ActiveRecord::Base
end
class Video < ActiveRecord::Base
end
class Image < ActiveRecord::Base
end
, - CreateSnippets:
class CreateSnippets < ActiveRecord::Migration
def self.up
create_table :snippets do |t|
t.references :post
t.column :snippetable_id, :integer, :null => false
t.column :snippetable_type, :string, :null => false
t.timestamps
end
end
end
! , rails :
p = Post.first
p.codes << Code.create(:code=>"This is a code snippet")
p.images << Image.create(:image=>"xyz.png")
p.images << Image.create(:image=>"123.png")
p.codes.count
p.images.count
p.snippets.count
Yaldi!
, 11 , , , . , -.
act_as_polymorph: