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  [ 2 Beiträge ] 
Autor Nachricht
BeitragVerfasst: 29 Jan 2016, 14:20 
Offline
Schüler
Benutzeravatar

Registriert: 14 Okt 2014, 16:36
Beiträge: 24
Wohnort: Hessen
Ich versuche einen ActiveRecord in einer DB zu sichern, leider wird während des Speicherns immer 'undefined method `[]' for nil:NilClass' ausgegeben.
(Rails 4.2)

Im Controller:


1
2
3
4
5
6
7
8
def save
user_name=params[:user_name]
password=params[:password]
#FtpUser.create(:user=>user_name, :password=>password)
ftp_user=FtpUser.new(user_name,password)
ftp_user.save(:valid => false) #Hier wird der Fehler geworfen, unabhaengig von save!, save oder create

end


Mein ActiveRecord(nicht wundern, ich war gezwungen eine existierende DB zu verwenden):


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
class FtpUser < ActiveRecord::Base

validates_uniqueness_of :User, :case_sensitive => false

attr_accessor :Password;
attr_writer :Uid, :Gid;
attr_reader :User, :Dir;

self.table_name='users'

self.primary_key='User'

establish_connection :ftp_user_db

@@keylist="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"

def initialize(user_name, password)
if (!user_name.nil?)
@User = user_name
else
@User = FtpUser.createUserName
end

if (!password.nil?)
@Password=password
else
@Password=FtpUser.generateRandomPassword(10)
end

@Dir="/var/ftp/#{User}"
@Uid=2001;
@Gid=2001;
end


def self.createUserName
username=''
if FtpUser.count>0
fu=FtpUser.find_by_id(FtpUser.maximum('id'))
un=fu.attributes['User']
username='c' + (un[1..-1].to_i + 1).to_s
elsif FtpUser.count==0
username='c1000'
end
username
end


#Generiert zuf��lliges Passwort
def self.generateRandomPassword(length)
i=0
password=''
begin
password << @@keylist[rand(@@keylist.length.to_i-1)]
i+=1
end until i >= length
password
end


end


Meine Migration:


1
2
3
4
5
6
7
8
9
10
11
class CreateFtpUsers < ActiveRecord::Migration
def change
create_table :ftp_users do |t|
t.string :User, :null=>false
t.string :Password, :null=>false
t.integer :Uid, :default=>1, :null=>false
t.integer :Gid, :default=>1, :null=>false
t.string :Dir, :null=>false
end
end
end


Sieht hier eventuell jemand einen Grund für das Scheintern des Versuches den Datensatz einzutragen?


Nach oben
 Profil  
 
BeitragVerfasst: 29 Jan 2016, 18:42 
Offline
Interpreter

Registriert: 10 Dez 2007, 17:37
Beiträge: 1906
Bei AR darf man den initializer nicht überschreiben. Das könnte schon der Fehler sein.

_________________
Grüße
Jack


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 2 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: