rubyforen.de
http://forum.ruby-portal.de/

Fehler 'undefined method `[]' for nil:NilClass' in ActiveRec
http://forum.ruby-portal.de/viewtopic.php?f=14&t=26739
Seite 1 von 1

Autor:  spellsleeper [ 29 Jan 2016, 14:20 ]
Betreff des Beitrags:  Fehler 'undefined method `[]' for nil:NilClass' in ActiveRec

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?

Autor:  slowjack2k [ 29 Jan 2016, 18:42 ]
Betreff des Beitrags:  Re: Fehler 'undefined method `[]' for nil:NilClass' in Activ

Bei AR darf man den initializer nicht überschreiben. Das könnte schon der Fehler sein.

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/