получить данные сессии в рельсах - PullRequest
3 голосов
/ 02 июля 2010

Я новичок в рельсах, пришедших с php, и изучаю рельсы 3 с помощью mongodb.

Я дошел до того, что у меня есть текст сообщения в формате html для mongo, и я могу создавать и входить в систему как пользователь.

При входе в систему я создаю сеанс, созданный nifty authenticate

session[:user_id] = user.id

теперь я пытаюсь получить этот user_id из сеанса, когда создаю новое сообщение, чтобы сообщение было связано с пользователем.

в моем posts_controller у меня есть функция создания следующим образом.

def create
    @post = Post.new(params[:post])
    respond_to do |format|
      if @post.save
        format.html { redirect_to(@post, :notice => 'Post was successfully created.') }
        format.xml  { render :xml => @post, :status => :created, :location => @post }
      else
        format.html { render :action => "new" }
        format.xml  { render :xml => @post.errors, :status => :unprocessable_entity }
      end
    end
end

однако, я считаю, что мне нужно передать сюда user_id, или, возможно, было бы лучше поместить его в мою модель.

Но пытаясь любого рода

@user_id = session[:user_id]

не вернул ничего значимого. Я поступаю неправильно?

Я видел посты, в которых описывается хранение сеансов в базе данных, но я не совсем понимаю, почему это должно быть необходимо для чего-то такого простого, как просто получение текущего идентификатора пользователя.

Ответы [ 2 ]

1 голос
/ 02 июля 2010

Взгляните на документы: Nifty Authentication

Nifty Authentication включает метод под названием current_user (большинство решений для аутентификации для Rails придерживаются того же соглашения об именах), который будет действовать точно так же, какон говорит, получить текущий пользователь.Таким образом, вы можете сделать следующее:

post.user = current_user

РЕДАКТИРОВАТЬ Это можно сделать только после того, как вы создадите правильные отношения, как описано Майком.

1 голос
/ 02 июля 2010

Если вы просто хотите отслеживать пользователя, который создал пост в вашем посте db? Внутри почтовой модели просто:

принадлежит: пользователь

должно работать. Пока у вас есть поле user_id в вашем посте db (Я не совсем уверен, если это то, что вы просили.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...