Если вам нужен только UID для пользовательского объекта, достаточно стандартно позволить rails разобраться с этим для вас, поэтому вы просто генерируете необходимые атрибуты своей таблицы и не включаете user_id.Однако это может быть случай, когда вы хотите этот user_id, в этом случае игнорируйте то, что я только что сказал.Вам не нужно отношение has_one, если у вас нет другой модели с именем user_id (что, я думаю, возможно)
Метод индекса обычно предназначен для возврата всех пользователей или хотя бы подмножества (если вы используете пагинацию дляпример) Поэтому я бы рекомендовал использовать следующее в методе индекса
User.find :all
Обратите внимание, что я снял скобки, это не имеет значения, но это соглашение о рельсах (это делает его более похожим наDSL).
Чтобы вернуть 1 пользователя, вам может потребоваться метод, подобный этому
# GET /posts/1
def show
@user = User.first
end
Но соглашение гласит, что идентификатор будет определяться отправленным URL, поэтому он может выглядеть примерно так
# GET /posts/1
def show
@user = User.find params[:id]
end
если затем вы получите доступ к URL-адресу, подобному указанному выше над методом show (/ posts / 1, где 1 - это идентификатор)
Представление для этого метода должно выглядеть примерно так:
<%= @user.user_id %>
Обратите внимание, что @user - это переменная-член, передаваемая в представление методом show, в данном случае это экземпляр пользователя с идентификатором 1, и вы получаете доступ к атрибуту user_id.этого экземпляра, поэтому вам не нужен User.
, так как это вызовет метод класса, а не метод экземпляра объекта пользователя.
Чтобы ответить на ваш конкретный вопрос, он должен выглядеть больше как
Модель
class User < ActiveRecord::Base
set_primary_key :user_id
end
Контроллер
class HomeController < ApplicationController
def show
@user = User.first
end
end
Доступ к представлению шоу с помощью / users / 0
Представление будет содержать
<%= @user.user_id %>
EDIT:
Для отображения пользователя, вошедшего в систему, вам, вероятно, понадобится объект сеанса пользователя, который создается при входе пользователя в систему и уничтожается при выходе из системы.У пользовательского сеансового объекта должен быть связанный пользовательский объект, затем вы можете запросить объект user_session, для которого зарегистрирован пользователь.
Я настоятельно рекомендую использовать authlogic , достаточно просто знать, что происходитно делает трюк