2015-08-18 3 views
-1

Итак, я работаю над проектом ruby, где я хочу создать базу данных, содержащую информацию о имени пользователя и пароле, к которой можно получить доступ через массив. Вот мой код.Ruby имя пользователя и пароль базы данных

$ncounter = 1 
$databaseArray = [["",""],["",""]] 

class User 
    attr_accessor :username 
    attr_accessor :password 

    def initialize 
     puts "Welcome to the site!" 
    end 
end 

def createUser(username, password) 
    counter = $ncounter 
    counter = User.new 
    counter.username = username 
    $databaseArray[ncounter - 1][0] = username 

    counter.password = password 
    $databaseArray[ncounter - 1][1] = password 
    ncounter = ncounter + 1 
end 

createUser("Charlie", "1234") 

Всякий раз, когда я запускаю его я получаю это в моей консоли

Welcome to the site! 
user.rb:17:in `createUser': undefined local variable or method `ncounter' for  
main:Object (NameError) 
from user.rb:24:in `<main>' 
+0

не должны 'ncounter' быть' $ ncounter' или он должен быть 'counter'? Похоже, ошибка довольно чистая –

+0

вы устанавливаете 'counter' глобальному объекту' $ ncounter', а затем сразу же перезаписываете его с помощью 'User.new'? Затем вы ссылаетесь на несуществующую локальную переменную 'ncounter' несколько раз (здесь ошибка). Поскольку все «Пользователи» будут храниться в этом массиве, '$ ncounter' кажется лишним, просто подсчитывая записи. Наконец, массив не является базой данных, и он будет перезагружаться каждый раз, когда приложение запускается. – engineersmnky

ответ

0

Короткий ответ: Вы имеете в виду как ncounter вместо $ncounter в некоторых точках createUser метода.

Долгий ответ: Вы должны заглянуть в некоторые существующие драгоценные камни для аутентификации. Если это приложение Rails, я рекомендую вам проверить галочку devise.

-1

Проверьте код ниже, должен быть счетчик не ncounter:

def createUser(username, password) 
    counter = $ncounter 
    counter = User.new 
    counter.username = username 
    $databaseArray[counter - 1][0] = username 

    counter.password = password 
    $databaseArray[counter - 1][1] = password 
    ncounter = ncounter + 1 
end 
+0

Этот ответ неверен. У пользователя нет метода '-', и вы все еще ссылаетесь на' ncounter', который не является объявленной локальной переменной, и я думаю, что в целом вы неправильно поняли. Я не верю в ответы на голосование, поэтому я думал, что просто опубликую комментарий в надежде, что вы разрешите это или удалите ответ. – engineersmnky

Смежные вопросы