-
.CODICEclass Database
attr_reader :db
def initialize
@db = SQLite3::Database.new('f.db')
end
end
class Test < Database
def initialize
super
end
def do # doesn't work with @db and super.db
@db.execute("sample_query") # super.db.execute("sample_query")
end
end
Come funziona in questo caso l'ereditarietà in Ruby per richiamare i metodi di un oggetto istanziato nella classe ereditata?. -
meh..
User deleted
Intanto non e' necessario l'initialize in Test, visto che viene gia' chiamato quello del padre se presente.
Secondo non ho capito cosa non va.
@db e' una variabile d'istanza, quindi accessibile da tutti gli ancestors (anche la classe stessa e' un ancestor).
super.db non ha alcun senso, super richiama il metodo nel padre rispetto al metodo in cui sei.
db come metodo e' accessibile a tutti gli ancestors visto che e' un attr_reader pubblico.. -
.
E da un metodo di classe come richiamo i metodi di @db? . -
meh..
User deleted
Per metodo di classe intendiamo la stessa cosa? `def self.stocazzo`?
Non puoi accedere a variabili d'istanza fuori dall'istanza.. -
.
Esattamente, e dunque come potrei risolvere per vie traverse secondo te senza istanziare ad ogni evocazione di un metodo o passarglielo come parametro?. -
meh..
User deleted
Per metodo di classe intendiamo la stessa cosa? `def self.stocazzo`?
Non puoi accedere a variabili d'istanza fuori dall'istanza.
Esattamente, e dunque come potrei risolvere per vie traverse secondo te senza istanziare ad ogni evocazione di un metodo o passarglielo come parametro?
Fammi un esempio di cosa hai in mente, perche' secondo me lo stai facendo sbagliato.
. -
.CODICEclass Database
attr_reader :db
def initialize
@db = SQLite3::Database.new('social.db')
init_db
end
def init_db
@db.execute('CREATE TABLE IF NOT EXISTS user (id INTEGER PRIMARY KEY, name TEXT, surname TEXT, nickname TEXT, email TEXT, password TEXT, gender INTEGER)')
@db.execute('CREATE TABLE IF NOT EXISTS post (id INTEGER PRIMARY KEY, sender TEXT, recipient TEXT, timestamp TEXT)')
end
end
class User < Database
attr_accessor :id, :name, :surname, :nickname, :email, :password, :gender
def initialize(id, name, surname, nickname, email, password, gender)
@id = id
@name = name
@surname = surname
@nickname = nickname
@email = email
@password = password
@gender = gender
end
def User.save(user)
for user in u
@db.execute("INSERT INTO user(name, surname, nickname, email, password, gender) VALUES('#{u.name}', '#{u.surname}', '#{u.nickname}', '#{u.email}', '#{u.password}', '#{u.gender}')")
end
end
def User.count
@db.get_first_value("SELECT COUNT(*) FROM user")
end
end
class Post < Database; end. -
meh..
User deleted
Ma perche' non usi DataMapper?
Poi non usare il for, e' inguardabile.. -
.
Si lo so, uso sempre each infatti (:
Comunque ci sto giocando da un pò, e devo dire che è davvero fantastico DataMapper.. -
meh..
User deleted
Si lo so, uso sempre each infatti (:
Comunque ci sto giocando da un pò, e devo dire che è davvero fantastico DataMapper.
Yep, e' il migliore tra gli ORM per Ruby secondo me..