ACHTUNG. Das ist ein Archiv des alten forum.ruby-portal.de. Die aktuelle Mailingliste gibt es auf lists.ruby-lang.org/pipermail/ruby-de.

NOTICE. This is a ready-only copy of the old forum.ruby-portal.de. You can find the current mailing list at lists.ruby-lang.org/pipermail/ruby-de.

Die Programmiersprache Ruby

Blog|

Forum|

Wiki  


Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]

Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
BeitragVerfasst: 18 Dez 2015, 15:05 
Offline
Schüler
Benutzeravatar

Registriert: 14 Okt 2014, 16:36
Beiträge: 24
Wohnort: Hessen
Hallo, ich habe 2 Probleme ein größeres und ein kleiners.
Ich fange mal mit dem großen an. Ich habe in meiner User-Klasse die auf eine externe Datenbank zugreift das Problem das ich auf ein Feld nicht zugreifen kann.
Es ist das Feld created_at, das ich als DateTime behandle


1
2
3
4
5
6
7
8
9
10
11
...
attr_accessor :created_at , :password;
attr_writer :uid, :gid;
attr_reader :user, :dir;
...
def initialize(params={})
...
@created_at=DateTime.now
...
end
...

Immigration


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|

t.string :user

t.string :password

t.integer :uid

t.integer :gid

t.string :dir

t.datetime :created_at

end

end
end

Das Anlegen funktioniert. Das Abfragen leider nicht.
Im Debuger wird das Attribut für das Objekt auch angezeigt:


1
2
3
4
@attributes=Hash (13 elements)
...
'created_at' => 2015-12-14 11:26:58 +0100
...




user.created_at

Gibt allerdings immer nil zurück, was ich als GelegenheitsRubyaner leider nicht verstehe.

Zu meinem zweiten Problem, dem Mappen von Attributen.
Es liegt darin, dass in der Datenbank einige Felder nicht der Rails-Schreibweise entsprechen.
So muß ich den Username beispielsweise so abfragen:



user.User

Gibt es die Möglichkeit das Attribut 'User' auf 'user' zu mappen?

Hier ist zum Verständnis auch noch der Auszug der DB-Table:


1
2
3
4
5
6
7
8
9
10

Columns:
id int(11) AI
User varchar(32) PK
Password varchar(64)
Uid int(11)
Gid int(11)
Dir varchar(255)
...
created_at datetime


Nach oben
 Profil  
 
 Betreff des Beitrags: Zum ersten Problem...
BeitragVerfasst: 18 Dez 2015, 16:45 
Offline
Schüler
Benutzeravatar

Registriert: 14 Okt 2014, 16:36
Beiträge: 24
Wohnort: Hessen
Der Zugriff mit



user.attributes['created_at']

funktioniert komischerweise


Nach oben
 Profil  
 
BeitragVerfasst: 18 Dez 2015, 18:02 
Offline
Interpreter

Registriert: 10 Dez 2007, 17:37
Beiträge: 1906
Ist ist nicht gut initialize von ActiveRecord zu überschreiben.
inialize wird nicht immer aufgerufen. created_at ist eine magische
Spalte. AR füllt diese Spalte automatisch mit der aktuellen Uhrzeit,
wenn der Datensatz angelegt wird.

Wenn du einen speziellen Wert für created_at brauchst, dann überschreib den
getter.

Wenn du deinen Attribute umbennen willst, dann geht das mit




alias_attribute :new_column_name, :column_name_in_db

_________________
Grüße
Jack


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
cron