#mysql #ruby-on-rails
#mysql #ruby-on-rails
Вопрос:
Я создал rail-приложение, к которому подключаюсь с базой данных mysql
у меня уже есть 2 таблицы users и history
как я могу извлекать данные из этих таблиц, с помощью которых я могу сохранять данные в базе данных
def register
if(params[:register])
@registermsg=Users.where(:username=>params[:register][:username])
if @registermsg.length>0
flash[:success] = "Username exists:#{params[:username]}:"
else
@reg = Users.create(user_params)
@reg.save
flash[:success] = "success:#{params[:register][:username]}:"
end
end
end
def user_params
params.require(:register).permit(:username, :password, :password2)
end
но когда я извлекаю данные от пользователей
def login
if session[:user]
redirect_to '/dash'
end
if(params[:login])
@login1=Users.where("username=? AND password=?",params[:login][:username],params[:login][:password])
if @login1.length==1
session[:user] = @login1
hist = History.create(userid: **@login1.id**, ip: request.remote_ip )
// here @login1.id is giving me error
redirect_to '/dash'
else
flash[:success] = "Wrong"
end
end
end
@login1=Users.where(«имя пользователя=? И пароль =?», параметры[:login][:username], параметры [:login][:password])
@login1.to_yaml печатает полные данные, как я могу получить идентификатор, имя пользователя и т.д. От @login1
в настоящее время @login1.id возникает ошибка
Я исследовал многие веб-сайты, включая stack overflow, до сих пор у меня не было никакого решения, пожалуйста, помогите
Ответ №1:
Здесь @login1
находится ActiveRelation
объект. Вам нужно будет вызвать first
, чтобы получить фактический пользовательский объект
if @login1.count==1
session[:user] = @login1.first
hist = History.create(userid: @login1.first.id, ip: request.remote_ip )
redirect_to '/dash'