class SqlView::Generators::ViewGenerator
Public Class Methods
next_migration_number(dir)
click to toggle source
# File lib/generators/sql_view/view/view_generator.rb, line 46 def self.next_migration_number(dir) ::ActiveRecord::Generators::Base.next_migration_number(dir) end
Public Instance Methods
activerecord_migration_class()
click to toggle source
# File lib/generators/sql_view/view/view_generator.rb, line 75 def activerecord_migration_class if ActiveRecord::Migration.respond_to?(:current_version) "ActiveRecord::Migration[#{ActiveRecord::Migration.current_version}]" else "ActiveRecord::Migration" end end
create_everything()
click to toggle source
# File lib/generators/sql_view/view/view_generator.rb, line 12 def create_everything create_file "app/sql_views/#{file_name}_view.rb", <<-FILE class #{class_name}View < SQLView::Model #{top_code} schema ->#{schema_code} extend_model_with do # sample how you can extend it, similar to regular AR model # # include SomeConcern # # belongs_to :user # has_many :posts # # scope :ordered, -> { order(:created_at) } # scope :by_role, ->(role) { where(role: role) } end end FILE create_file "db/migrate/#{self.class.next_migration_number("db/migrate")}_create_#{file_name}_view.rb", <<-FILE class #{migration_class_name} < #{activerecord_migration_class} def up #{class_name}View.sql_view.up end def down #{class_name}View.sql_view.down end end FILE end
materialized_code()
click to toggle source
# File lib/generators/sql_view/view/view_generator.rb, line 59 def materialized_code options[:materialized] ? " materialized" : nil end
migration_class_name()
click to toggle source
# File lib/generators/sql_view/view/view_generator.rb, line 71 def migration_class_name "Create#{class_name.tr('.', '')}View" end
schema_code()
click to toggle source
# File lib/generators/sql_view/view/view_generator.rb, line 63 def schema_code if args[0].present? " { #{args[0]} }" else " {#{ "\n # ActiveRecord::Relation or SQL\n # for example: User.where(active: true)\n }" }" end end
top_code()
click to toggle source
# File lib/generators/sql_view/view/view_generator.rb, line 51 def top_code [view_name_code, materialized_code].compact.join("\n\n") end
view_name_code()
click to toggle source
# File lib/generators/sql_view/view/view_generator.rb, line 55 def view_name_code options["view-name"] ? " self.view_name = '#{options["view-name"]}'" : nil end
Private Instance Methods
file_name()
click to toggle source
Calls superclass method
# File lib/generators/sql_view/view/view_generator.rb, line 88 def file_name super.tr(".", "_") end
Also aliased as: singular_name