Class: FixtureOverlord::Model

Inherits:
Object
  • Object
show all
Defined in:
lib/fixture_overlord/model.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(hash, filename) ⇒ Model

Returns a new instance of Model.



17
18
19
# File 'lib/fixture_overlord/model.rb', line 17

def initialize(hash, filename)
  @hash, @filename = hash, filename
end

Class Method Details

.create(hash, filename) ⇒ Object Also known as: create!



11
12
13
# File 'lib/fixture_overlord/model.rb', line 11

def create(hash, filename)
  new(hash, filename).create_as_model
end

.init(hash, filename) ⇒ Object



7
8
9
# File 'lib/fixture_overlord/model.rb', line 7

def init(hash, filename)
  new(hash, filename).new_model_with_values
end

Instance Method Details

#can_convert_to_model?Boolean

Returns:

  • (Boolean)


37
38
39
40
41
# File 'lib/fixture_overlord/model.rb', line 37

def can_convert_to_model?
  model = model_name
  model.respond_to?(:superclass) &&
    model.superclass == ::ActiveRecord::Base
end

#convert_to_modelObject



21
22
23
# File 'lib/fixture_overlord/model.rb', line 21

def convert_to_model
  model_name.new( sanitize_hash )
end

#create_as_modelObject



29
30
31
# File 'lib/fixture_overlord/model.rb', line 29

def create_as_model
  model_name.create( sanitize_hash )
end

#model_nameObject



33
34
35
# File 'lib/fixture_overlord/model.rb', line 33

def model_name
  @model_name ||= @filename.to_s.singularize.classify.constantize
end

#new_model_with_valuesObject



25
26
27
# File 'lib/fixture_overlord/model.rb', line 25

def new_model_with_values
  model_name.new( sanitize_hash )
end

#respond_to_model_methods?Boolean

Returns:

  • (Boolean)


43
44
45
46
47
48
# File 'lib/fixture_overlord/model.rb', line 43

def respond_to_model_methods?
  model = convert_to_model
  model.respond_to?(:create!) ||
    model.respond_to?(:create) ||
    model.respond_to?(:build)
end

#sanitize_hashObject



50
51
52
# File 'lib/fixture_overlord/model.rb', line 50

def sanitize_hash
  @hash.delete_if { |key,value| key.to_sym == :id }
end