From b9dabaabea4c7aa889b665fe6eb6cf608e1bc7b9 Mon Sep 17 00:00:00 2001 From: Jesse Storimer Date: Wed, 26 Jan 2011 23:20:06 -0500 Subject: [PATCH] Add --password option to model generator Adds the necessary db column and model declaration for the new SecurePassword functionality to your model. --- .../active_record/model/model_generator.rb | 1 + .../active_record/model/templates/migration.rb | 3 +++ .../active_record/model/templates/model.rb | 3 +++ railties/test/generators/model_generator_test.rb | 10 ++++++++++ 4 files changed, 17 insertions(+), 0 deletions(-) diff --git a/activerecord/lib/rails/generators/active_record/model/model_generator.rb b/activerecord/lib/rails/generators/active_record/model/model_generator.rb index c75abd0..9e7d091 100644 --- a/activerecord/lib/rails/generators/active_record/model/model_generator.rb +++ b/activerecord/lib/rails/generators/active_record/model/model_generator.rb @@ -9,6 +9,7 @@ module ActiveRecord class_option :migration, :type => :boolean class_option :timestamps, :type => :boolean + class_option :password, :type => :boolean class_option :parent, :type => :string, :desc => "The parent class for the generated model" def create_migration_file diff --git a/activerecord/lib/rails/generators/active_record/model/templates/migration.rb b/activerecord/lib/rails/generators/active_record/model/templates/migration.rb index cd2552d..75bb162 100644 --- a/activerecord/lib/rails/generators/active_record/model/templates/migration.rb +++ b/activerecord/lib/rails/generators/active_record/model/templates/migration.rb @@ -4,6 +4,9 @@ class <%= migration_class_name %> < ActiveRecord::Migration <% for attribute in attributes -%> t.<%= attribute.type %> :<%= attribute.name %> <% end -%> +<% if options[:password] %> + t.string :password_digest +<% end -%> <% if options[:timestamps] %> t.timestamps <% end -%> diff --git a/activerecord/lib/rails/generators/active_record/model/templates/model.rb b/activerecord/lib/rails/generators/active_record/model/templates/model.rb index 5c47f8b..a1e7a1c 100644 --- a/activerecord/lib/rails/generators/active_record/model/templates/model.rb +++ b/activerecord/lib/rails/generators/active_record/model/templates/model.rb @@ -1,5 +1,8 @@ <% module_namespacing do -%> class <%= class_name %> < <%= parent_class_name.classify %> +<% if options[:password] %> + has_secure_password +<% end -%> <% attributes.select {|attr| attr.reference? }.each do |attribute| -%> belongs_to :<%= attribute.name %> <% end -%> diff --git a/railties/test/generators/model_generator_test.rb b/railties/test/generators/model_generator_test.rb index b868596..13604bb 100644 --- a/railties/test/generators/model_generator_test.rb +++ b/railties/test/generators/model_generator_test.rb @@ -41,6 +41,11 @@ class ModelGeneratorTest < Rails::Generators::TestCase assert_file "app/models/admin/account.rb", /class Admin::Account < ActiveRecord::Base/ end + def test_model_with_password + run_generator ["account", "--password"] + assert_file "app/models/account.rb", /has_secure_password/ + end + def test_migration run_generator assert_migration "db/migrate/create_accounts.rb", /class CreateAccounts < ActiveRecord::Migration/ @@ -118,6 +123,11 @@ class ModelGeneratorTest < Rails::Generators::TestCase ActiveRecord::Base.timestamped_migrations = true end + def test_migration_with_password + run_generator ["account", "--password"] + assert_migration "db/migrate/create_accounts", /t.string :password_digest/ + end + def test_model_with_references_attribute_generates_belongs_to_associations run_generator ["product", "name:string", "supplier_id:references"] assert_file "app/models/product.rb", /belongs_to :supplier/ -- 1.7.3.5