From 832a0e4866cc0dd33dc6c1c4d5dc75e35152e553 Mon Sep 17 00:00:00 2001 From: Philip Arndt Date: Mon, 9 Aug 2010 21:00:30 +1200 Subject: generate additional fields and specify relationships. --- .../refinery_blog/refinery_blog_generator.rb | 41 +++++++++++++--------- generators/refinery_blog/templates/migration.rb | 7 ++-- 2 files changed, 27 insertions(+), 21 deletions(-) (limited to 'generators') diff --git a/generators/refinery_blog/refinery_blog_generator.rb b/generators/refinery_blog/refinery_blog_generator.rb index 0739498..d18268b 100644 --- a/generators/refinery_blog/refinery_blog_generator.rb +++ b/generators/refinery_blog/refinery_blog_generator.rb @@ -7,37 +7,44 @@ class RefineryBlogGenerator < Rails::Generator::NamedBase end def banner - "Usage: script/generate refinery_blog" + 'Usage: script/generate refinery_blog' end def manifest - tables = %w(posts comments categories).map{|t| "blog_#{t}"} record do |m| m.template('seed.rb', 'db/seeds/refinerycms_blog.rb') m.migration_template('migration.rb', 'db/migrate', - :migration_file_name => "create_blog_structure", + :migration_file_name => 'create_blog_structure', :assigns => { - :migration_name => "CreateBlogStructure", + :migration_name => 'CreateBlogStructure', :tables => [{ - :table_name => tables.first, + :table_name => 'blog_posts', :attributes => [ - Rails::Generator::GeneratedAttribute.new("title", "string"), - Rails::Generator::GeneratedAttribute.new("body", "text"), - Rails::Generator::GeneratedAttribute.new("draft", "boolean") - ] + Rails::Generator::GeneratedAttribute.new('title', 'string'), + Rails::Generator::GeneratedAttribute.new('body', 'text'), + Rails::Generator::GeneratedAttribute.new('draft', 'boolean') + ], :id => true },{ - :table_name => tables.second, + :table_name => 'blog_comments', :attributes => [ - Rails::Generator::GeneratedAttribute.new("name", "string"), - Rails::Generator::GeneratedAttribute.new("email", "string"), - Rails::Generator::GeneratedAttribute.new("body", "text") - ] + Rails::Generator::GeneratedAttribute.new('name', 'string'), + Rails::Generator::GeneratedAttribute.new('email', 'string'), + Rails::Generator::GeneratedAttribute.new('body', 'text'), + Rails::Generator::GeneratedAttribute.new('approved', 'boolean'), + Rails::Generator::GeneratedAttribute.new('blog_post_id', 'integer') + ], :id => true },{ - :table_name => tables.third, + :table_name => 'blog_categories', :attributes => [ - Rails::Generator::GeneratedAttribute.new("title", "string") - ] + Rails::Generator::GeneratedAttribute.new('title', 'string') + ], :id => true + },{ + :table_name => 'blog_categories_blog_posts', + :attributes => [ + Rails::Generator::GeneratedAttribute.new('blog_category_id', 'integer'), + Rails::Generator::GeneratedAttribute.new('blog_post_id', 'integer') + ], :id => false }] }) end diff --git a/generators/refinery_blog/templates/migration.rb b/generators/refinery_blog/templates/migration.rb index 2ebd06e..5ba29c6 100644 --- a/generators/refinery_blog/templates/migration.rb +++ b/generators/refinery_blog/templates/migration.rb @@ -1,16 +1,15 @@ class <%= migration_name %> < ActiveRecord::Migration def self.up<% tables.each do |table| %> - create_table :<%= table[:table_name] %> do |t| + create_table :<%= table[:table_name] %>, :id => <%= table[:id].to_s %> do |t| <% table[:attributes].each do |attribute| -%> t.<%= attribute.type %> :<%= attribute.name %> <% end -%> - t.timestamps + <%= 't.timestamps' if table[:id] %> end - add_index :<%= table[:table_name] %>, :id + <%= "add_index :#{table[:table_name]}, :id" if table[:id] %> <% end -%> - load(Rails.root.join('db', 'seeds', 'refinerycms_blog.rb').to_s) end -- cgit v1.2.3