# User\_id being saved as NULL... but why?

**URL:** <https://www.ruby-forum.com/t/user-id-being-saved-as-null-but-why/188259>\
**Category:** Rails\
**Created:** [May 8, 2010, 6:16pm UTC](https://www.ruby-forum.com/t/user-id-being-saved-as-null-but-why/188259 "2010-05-08T18:16:31Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![craigrails](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/c2a13f/32.png) [@craigrails](https://www.ruby-forum.com/u/craigrails)\
**Post date:** [May 8, 2010, 6:16pm UTC](https://www.ruby-forum.com/t/user-id-being-saved-as-null-but-why/188259/1 "2010-05-08T18:16:31Z")

</div>

Hello there,

I have a mini blog in which stores a few bits of info:

- title
- body
- created on
- user\_id

If you’re logged in, you can enter a comment too.  
this stores:

- body
- blogpost\_id
- user\_id

however. For some reason, the user id when the blog is created is  
stored. It is not stored when a user adds a comment, and I wondered if  
anyone can spot what i ave missed?

Actions from the Blogpost controller:

def new  
@user = User.find(session[:user\_id])  
#@blogpost = Blogpost.new  
@blogpost = Blogpost.create(:body =\> params[:body], :user\_id =\>  
session[:user\_id])

```
@cat = Category.find(:all)
respond_to do |format|
  format.html # new.html.erb
  format.xml { render :xml => @blogpost }
end

```

end

def create  
@user = User.find(session[:user\_id])  
@blogpost = Blogpost.new(params[:blogpost])  
#@blogpost.category\_id = (params[:category])

```
respond_to do |format|
  if @blogpost.save
    flash[:notice] = 'Blogpost was successfully created.'
    format.html { redirect_to(@blogpost) }
    format.xml { render :xml => @blogpost, :status

```

=\> :created, :location =\> @blogpost }  
else  
format.html { render :action =\> “new” }  
format.xml { render :xml =\> @blogpost.errors, :status  
=\> :unprocessable\_entity }  
end  
end  
end

And then the comment: (this is also in the same controller)

def comment  
@user = User.find(session[:user\_id])  
@blogpost = Blogpost.new  
@blogpost = Blogpost.create(:body =\> params[:body], :user\_id =\>  
session[:user\_id])

```
 Blogpost.find(params[:id]).comments.create(params[:comment])

 flash[:notice] = "Added your comment"

 redirect_to :action => "show", :id => params[:id]

```

end

THe coment does get stored to the database, but the user\_id remains  
NULL.

Any ideas?

thanks for reading.

---

<div class="post-metadata">

**Author:** ![craigrails](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/c2a13f/32.png) [@craigrails](https://www.ruby-forum.com/u/craigrails)\
**Post date:** [May 9, 2010, 12:39am UTC](https://www.ruby-forum.com/t/user-id-being-saved-as-null-but-why/188259/2 "2010-05-09T00:39:54Z")

</div>

This sounds like you don’t have auto-increment turned on, on the  
specific database table. Check that first?  
-j

---

<div class="post-metadata">

**Author:** ![craigrails](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/c2a13f/32.png) [@craigrails](https://www.ruby-forum.com/u/craigrails)\
**Post date:** [May 9, 2010, 1:22am UTC](https://www.ruby-forum.com/t/user-id-being-saved-as-null-but-why/188259/3 "2010-05-09T01:22:03Z")

</div>

On May 8, 5:15 pm, RubyonRails\_newbie [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> ```
> redirect_to :action => "show", :id => params[:id]
> 
> ```

Unless user\_id was part of the fields in params[:comment] you don’t  
seem to be setting the user id on the comment anywhere.

Fred

---

<div class="post-metadata">

**Author:** ![craigrails](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/c2a13f/32.png) [@craigrails](https://www.ruby-forum.com/u/craigrails)\
**Post date:** [May 9, 2010, 2:57pm UTC](https://www.ruby-forum.com/t/user-id-being-saved-as-null-but-why/188259/4 "2010-05-09T14:57:20Z")

</div>

Hello,

Good point - I have tried to amend the code like below, but i get  
errors:

ORIGINAL CODE:  
Blogpost.find(params[:id]).comments.create(params[:comment])

AMENDED CODE 1:  
Blogpost.find(params[:id, :user\_id]).comments.create(params[:comment])  
THis returns error: wrong number of arguments (2 for 1)

AMENDED CODE 2:  
Blogpost.find(params[:id]).comments.create(params[:comment,:user\_id])

THis also returns error: wrong number of arguments (2 for 1)

I’m sure it’s quite simple, but can’t put my finger on it… Any ideas  
what needs to change?

Many Thanks

---

<div class="post-metadata">

**Author:** ![craigrails](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/c2a13f/32.png) [@craigrails](https://www.ruby-forum.com/u/craigrails)\
**Post date:** [May 9, 2010, 4:53pm UTC](https://www.ruby-forum.com/t/user-id-being-saved-as-null-but-why/188259/5 "2010-05-09T16:53:48Z")

</div>

On May 9, 1:55 pm, RubyonRails\_newbie [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> THis returns error: wrong number of arguments (2 for 1)
> 
> AMENDED CODE 2:  
> Blogpost.find(params[:id]).comments.create(params[:comment,:user\_id])

You either need to merge your hash of params from the form with the  
user\_id you want to set or you need to set the user\_id on the comment  
afterwards.

Fred
