Ich habe versucht, mit Datamapper auf meine vorhandenen Daten zuzugreifen. Aber es funktioniert nicht. Alle Methoden wie .first
, .all
, ... geben nichts zurück. .update
eine undefined method update for nil:NilClass (NoMethodError)
Rückkehr ...Warum Datamapper-Methoden nicht funktioniert?
Ich bin sicher, dass die Datenbank, da dieser Code Rückkehr nicht leer ist gut die new_consultation.date
new_consultation = Consultation.new
new_consultation.name = name_prestation
new_consultation.expense = expense_prestation
new_consultation.date = date_prestation.empty? ? Time.now.strftime("%d/%m/%Y") : date_prestation
new_consultation.save
puts new_consultation
puts new_consultation.date
Dies ist der gesamte Code:
DataMapper.setup(:default, 'sqlite:medical_expenses.db')
class Consultation
include DataMapper::Resource
property :id, Serial
property :name, Text, required: true
property :expense, Text, required: true
property :date, Text, required: true
property :refund, Text, required: true
end
DataMapper.finalize()
DataMapper.auto_upgrade!()
# Enter and save new consultation
puts 'Prestations ?'
name_prestation = gets.chomp
puts 'Montant ?'
expense_prestation = gets.chomp
puts 'Date ? (par défaut date du jour)'
date_prestation = gets.chomp
print "Dépense enregistrée"
new_consultation = Consultation.new
new_consultation.name = name_prestation
new_consultation.expense = expense_prestation
new_consultation.date = date_prestation.empty? ? Time.now.strftime("%d/%m/%Y") : date_prestation
new_consultation.save
puts new_consultation
puts new_consultation.date
Consultation.first.update(refund: 'none')
puts Consultation.first
Dank @eiko für Ihre Antwort. Eigentlich will ich keine Rückerstattung verlangen. aber ich versuche zu entfernen "erforderlich: wahr" und ich bekomme diesen Fehler: "NOT NULL Constraint fehlgeschlagen: conscriptions.refund (DataObjects :: IntegrityError)". Nur um zu testen, versuche ich 'Attribute 'auf' require: true' zurückzusetzen und setze es ('new_consultation.refund =" no "'), und dann schreibst du, weil es funktioniert! Aber ich kann das 'require: true' entfernen, ohne diesen Fehler zu haben, weißt du, wie ich das beheben kann? – Orsay
@Orsay können Sie versuchen, "require: false" spezifisch zu setzen, um zu sehen, ob das funktioniert? – eiko
Wenn ich 'require: false' setze und immer noch setze ('requestation.refund = 'keine Rückerstattung')' es funktioniert. Aber wenn ich es nicht setze, bekomme ich 'NOT NULL constraint failed: conscriptions.refund (DataObjects :: IntegrityError)' – Orsay