Skip to content

Instantly share code, notes, and snippets.

@TrevMcKendrick
Created October 10, 2013 05:52
Show Gist options
  • Save TrevMcKendrick/6913663 to your computer and use it in GitHub Desktop.
Save TrevMcKendrick/6913663 to your computer and use it in GitHub Desktop.
require 'sqlite3'
require 'pry'
class Student
attr_accessor :name, :twitter, :linkedin, :facebook, :website, :saved, :id
@@db = SQLite3::Database.new 'students.db'
@@students = []
def initialize
if @@students.count == 0
@id = 1
else
@id = @@students.max_by { |s| s.id }.id + 1
end
@@students << self
@saved = false
end
def insert
sql = "INSERT INTO students (name, twitter, linkedin, facebook, website) VALUES (?,?,?,?,?)"
@@db.execute(sql, self.name, self.twitter, self.linkedin, self.facebook, self.website)
saved!
# find = "SELECT id FROM students WHERE name = ? ORDER BY id DESC LIMIT 1"
# results = @@db.execute(find, self.name)
# @id = results.flatten.first
end
def update
if self.saved?
sql = "UPDATE students SET name = ?, twitter = ?, linkedin = ?, facebook = ?, website = ? WHERE id = ?"
@@db.execute(sql, self.name, self.twitter, self. linkedin, self.facebook, self.website, self.id)
end
saved!
end
def self.find(id)
#@@students.select { |s| s.id == id }.first
find = "SELECT * FROM students WHERE id = ?"
result = @@db.execute(find, id)
Student.new_from_db(result.first)
end
def self.new_from_db(row)
#s = Student.new
puts the_row.inspect
#no idea why this doesn't work. gives me a nomethod error saying I"m trying to call a [] method on nil. But the array *has* elements
puts the_row[0]
s.id = the_row[0]
s.name = the_row[1]
s.linkedin = row[2]
s.facebook = row[3]
s.website = row[4]
s.twitter = row[5]
#s.saved!
end
def self.load(id)
s = Student.new
s = Student.find(id)
s.name
end
def save
saved? ? update : insert
end
def saved!
self.saved = true
end
def saved?
self.saved
end
def self.reset_all
@@students.clear
end
def self.all
@@students
end
def self.find_by_name(name)
@@students.select { |s| s.name == name }
end
def self.delete(id)
@@students.reject! { |s| s.id == id}
end
#binding.pry
end
Student.find(1).inspect
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment