I'm new to rails coming from php, and I'm learning rails 3 with mongodb.
I have got to the point where I have an html form post text to mongo, and i can create and login as a user.
In the user login, i create a session with as created by nifty authenticate
session[:user_id] = user.id
now I'm trying to get that user_id from the session when I create a new post so that the post is connected to the user.
in my posts_controller, I have the create function as follows.
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
however, i believe I need to pass the user_id in here, or maybe it would be better to put it in my model.
But attempting any sort of
@user_id = session[:user_id]
hasn't returned anything meaningful. Am I going about this the wrong way?
I've seen posts which describe storing sessions in the database, but I don't really see why this should be necessary for something as simple as just getting the currently logged-in user_id.
If you are just looking to keep track of the user who created the post in your post db? Within the post model a simple:
belongs to: user
should work. As long as you have a user_id field in your post db as well (I'm not exactly sure if this is what you were asking for.)
Take a look at the docs: Nifty Authentication
Nifty Authentication includes a method called current_user (most of the authentication solutions for Rails follow the same naming convention) that will do exactly as it says, get the current user. So, you could do the following:
post.user = current_user
EDIT This can be done only after you create the proper relationship as detailed by Mike.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With