class Sprig::Reap::Inputs::Model
Attributes
input[R]
Public Class Methods
default()
click to toggle source
# File lib/sprig/reap/inputs/model.rb, line 12 def self.default valid_classes.map(&to_model_inputs) end
new(input)
click to toggle source
# File lib/sprig/reap/inputs/model.rb, line 28 def initialize(input) @input = input.is_a?(String) ? eval(input) : input validate! end
parse(input)
click to toggle source
# File lib/sprig/reap/inputs/model.rb, line 16 def self.parse(input) collection = if input.is_a? String input.split(',').map { |string| string.strip } elsif input.is_a? ActiveRecord::Relation [input] else Array(input) end collection.map(&to_model_inputs) end
valid_classes()
click to toggle source
# File lib/sprig/reap/inputs/model.rb, line 5 def self.valid_classes @@valid_classes ||= begin Rails.application.eager_load! ActiveRecord::Base.subclasses end end
Private Class Methods
to_model_inputs()
click to toggle source
# File lib/sprig/reap/inputs/model.rb, line 44 def self.to_model_inputs proc { |input| new(input) } end
Public Instance Methods
klass()
click to toggle source
# File lib/sprig/reap/inputs/model.rb, line 34 def klass @klass ||= relation? ? input.klass : input end
records()
click to toggle source
# File lib/sprig/reap/inputs/model.rb, line 38 def records relation? ? input : input.all end
Private Instance Methods
relation?()
click to toggle source
# File lib/sprig/reap/inputs/model.rb, line 58 def relation? input.is_a? ActiveRecord::Relation end
valid_classes()
click to toggle source
# File lib/sprig/reap/inputs/model.rb, line 48 def valid_classes self.class.valid_classes end
validate!()
click to toggle source
# File lib/sprig/reap/inputs/model.rb, line 52 def validate! if valid_classes.exclude? klass raise ArgumentError, "Cannot create a seed file for #{klass} because it is not a subclass of ActiveRecord::Base." end end