Class: GoOnRails::Association
- Inherits:
-
Object
- Object
- GoOnRails::Association
- Defined in:
- lib/generators/gor/association.rb
Instance Attribute Summary collapse
-
#klass ⇒ Object
readonly
Returns the value of attribute klass.
-
#models ⇒ Object
readonly
Returns the value of attribute models.
Instance Method Summary collapse
- #get_schema_info ⇒ Object
-
#initialize(klass, models) ⇒ Association
constructor
A new instance of Association.
Constructor Details
#initialize(klass, models) ⇒ Association
Returns a new instance of Association.
3 4 5 6 |
# File 'lib/generators/gor/association.rb', line 3 def initialize(klass, models) @klass = klass @models = models end |
Instance Attribute Details
#klass ⇒ Object (readonly)
Returns the value of attribute klass.
7 8 9 |
# File 'lib/generators/gor/association.rb', line 7 def klass @klass end |
#models ⇒ Object (readonly)
Returns the value of attribute models.
7 8 9 |
# File 'lib/generators/gor/association.rb', line 7 def models @models end |
Instance Method Details
#get_schema_info ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/generators/gor/association.rb', line 9 def get_schema_info info = {struct_body: "", has_assoc_dependent: false, assoc_info: {has_many: {}, has_one: {}, belongs_to: {}}} self.klass.reflect_on_all_associations.each do |assoc| = ["json:\"#{assoc.name.to_s},omitempty\" db:\"#{assoc.name.to_s}\" valid:\"-\""] case assoc.macro when :has_many col_name = assoc.name.to_s.camelize class_name = assoc.name.to_s.singularize.camelize unless assoc..empty? if assoc..key? :class_name class_name = assoc.[:class_name] elsif assoc..key? :source class_name = assoc.[:source].to_s.camelize end end type_name = "[]#{class_name}" if col_name && type_name && (self.models.include? class_name) info[:struct_body] << sprintf("%s %s `%s`\n", col_name, type_name, .join(" ")) info[:assoc_info][:has_many][col_name] = {class_name: class_name} info[:assoc_info][:has_many][col_name].merge!(assoc.) unless assoc..empty? end when :has_one, :belongs_to col_name = class_name = assoc.name.to_s.camelize unless assoc..empty? if assoc..key? :class_name class_name = assoc.[:class_name] elsif assoc..key? :source class_name = assoc.[:source].to_s.camelize end end type_name = class_name if col_name && type_name && (self.models.include? class_name) info[:struct_body] << sprintf("%s %s `%s`\n", col_name, type_name, .join(" ")) info[:assoc_info][assoc.macro][col_name] = {class_name: class_name} info[:assoc_info][assoc.macro][col_name].merge!(assoc.) unless assoc..empty? end end info[:has_assoc_dependent] = true if assoc..key? :dependent end info end |