Add GeneratedAttribute.
This commit is contained in:
parent
d4ec091580
commit
75fbd73936
|
@ -0,0 +1,44 @@
|
||||||
|
module Rails
|
||||||
|
module Generators
|
||||||
|
class GeneratedAttribute
|
||||||
|
attr_accessor :name, :type, :column
|
||||||
|
|
||||||
|
def initialize(name, type)
|
||||||
|
@name, @type = name, type.to_sym
|
||||||
|
@column = ActiveRecord::ConnectionAdapters::Column.new(@name, nil, @type)
|
||||||
|
end
|
||||||
|
|
||||||
|
def field_type
|
||||||
|
@field_type ||= case type
|
||||||
|
when :integer, :float, :decimal then :text_field
|
||||||
|
when :datetime, :timestamp, :time then :datetime_select
|
||||||
|
when :date then :date_select
|
||||||
|
when :string then :text_field
|
||||||
|
when :text then :text_area
|
||||||
|
when :boolean then :check_box
|
||||||
|
else
|
||||||
|
:text_field
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def default
|
||||||
|
@default ||= case type
|
||||||
|
when :integer then 1
|
||||||
|
when :float then 1.5
|
||||||
|
when :decimal then "9.99"
|
||||||
|
when :datetime, :timestamp, :time then Time.now.to_s(:db)
|
||||||
|
when :date then Date.today.to_s(:db)
|
||||||
|
when :string then "MyString"
|
||||||
|
when :text then "MyText"
|
||||||
|
when :boolean then false
|
||||||
|
else
|
||||||
|
""
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def reference?
|
||||||
|
[ :references, :belongs_to ].include?(self.type)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -1,4 +1,5 @@
|
||||||
require 'generator/base'
|
require 'generator/base'
|
||||||
|
require 'generator/generated_attribute'
|
||||||
|
|
||||||
module Rails
|
module Rails
|
||||||
module Generators
|
module Generators
|
||||||
|
@ -7,11 +8,13 @@ module Rails
|
||||||
|
|
||||||
attr_reader :class_name, :singular_name, :plural_name, :table_name,
|
attr_reader :class_name, :singular_name, :plural_name, :table_name,
|
||||||
:class_path, :file_path, :class_nesting, :class_nesting_depth
|
:class_path, :file_path, :class_nesting, :class_nesting_depth
|
||||||
|
|
||||||
alias :file_name :singular_name
|
alias :file_name :singular_name
|
||||||
|
|
||||||
def initialize(*args)
|
def initialize(*args)
|
||||||
super
|
super
|
||||||
assign_names!
|
assign_names!
|
||||||
|
parse_attributes! if respond_to?(:attributes)
|
||||||
end
|
end
|
||||||
|
|
||||||
protected
|
protected
|
||||||
|
@ -35,6 +38,14 @@ module Rails
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Convert attributes hash into an array with GeneratedAttribute objects.
|
||||||
|
#
|
||||||
|
def parse_attributes!
|
||||||
|
attributes.map! do |name, type|
|
||||||
|
Rails::Generator::GeneratedAttribute.new(name, type)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
# Extract modules from filesystem-style or ruby-style path. Both
|
# Extract modules from filesystem-style or ruby-style path. Both
|
||||||
# good/fun/stuff and Good::Fun::Stuff produce the same results.
|
# good/fun/stuff and Good::Fun::Stuff produce the same results.
|
||||||
#
|
#
|
||||||
|
|
Loading…
Reference in New Issue