Module: MyActiveFile::ClassMethods
- Defined in:
- lib/my_active_file.rb
Instance Method Summary
collapse
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(name, *args, &block) ⇒ Object
43
44
45
46
47
48
49
|
# File 'lib/my_active_file.rb', line 43
def method_missing(name, *args, &block)
field = name.to_s.split('_').last
super if @fields.map(&:name).include? field
load_all.select do |object|
object.send(field) == args.first
end
end
|
Instance Method Details
#field(name, required: false, default: '') ⇒ Object
18
19
20
21
22
23
24
25
26
27
28
29
30
|
# File 'lib/my_active_file.rb', line 18
def field(name, required: false, default: '')
@fields ||= []
@fields << Field.new(name, required, default)
class_eval %$
attr_accessor *#{@fields.map(&:name)}
attr_reader :id, :destroyed, :new_record
def initialize(#{@fields.map(&:to_argument).join(', ')})
@id = self.class.next_id
@destroyed = false
@new_record = true
#{@fields.map(&:to_assign).join("\n")}
end $
end
|
#find(id) ⇒ Object
32
33
34
35
36
37
|
# File 'lib/my_active_file.rb', line 32
def find(id)
unless File.exist?("db/revistas/#{id}.yml")
raise DocumentNotFound, "Arquivo #{id} não encontrado.", caller
end
YAML.load File.open("db/revistas/#{id}.yml", 'r')
end
|
#next_id ⇒ Object
39
40
41
|
# File 'lib/my_active_file.rb', line 39
def next_id
Dir.glob('db/revistas/*.yml').size + 1
end
|