class Rulers::Model::FileModel

Public Class Methods

all() click to toggle source
# File lib/rulers/file_model.rb, line 32
def self.all
  files = Dir["db/quotes/*.json"]
  files.map { |f| FileModel.new f }
end
create(attrs) click to toggle source
# File lib/rulers/file_model.rb, line 37
      def self.create(attrs)
        hash = {}
        hash["submitter"] = attrs["submitter"] || ""
        hash["quote"] = attrs["quote"] || ""
        hash["attribution"] = attrs["attribution"] || ""

        files = Dir["db/quotes/*.json"]
        names = files.map { |f| f.split("/")[-1] }
        highest = names.map { |b| b[0...-5].to_i }.max
        id = highest + 1

        File.open("db/quotes/#{id}.json", "w") do |f|
          f.write <<TEMPLATE
{
  "submitter": "#{hash["submitter"]}",
  "quote": "#{hash["quote"]}",
  "attribution": "#{hash["attribution"]}"
}
TEMPLATE
        end

        FileModel.new "db/quotes/#{id}.json"
      end
find(id) click to toggle source
# File lib/rulers/file_model.rb, line 24
def self.find(id)
  begin
    FileModel.new("db/quotes/#{id}.json")
  rescue
    return nil
  end
end
new(filename) click to toggle source
# File lib/rulers/file_model.rb, line 5
def initialize(filename)
  @filename = filename

  # If filename is "dir/37.json", @id is 37
  basename = File.split(filename)[-1]
  @id = File.basename(basename, ".json").to_i

  obj = File.read(filename)
  @hash = MultiJson.decode(obj)
end

Public Instance Methods

[](name) click to toggle source
# File lib/rulers/file_model.rb, line 16
def [](name)
  @hash[name.to_s]
end
[]=(name, value) click to toggle source
# File lib/rulers/file_model.rb, line 20
def []=(name, value)
  @hash[name.to_s] = value
end