# Cross referenced tables

**URL:** <https://www.ruby-forum.com/t/cross-referenced-tables/135782>\
**Category:** Rails\
**Created:** [April 24, 2008, 10:07pm UTC](https://www.ruby-forum.com/t/cross-referenced-tables/135782 "2008-04-24T22:07:40Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![lfeistel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/ecc23a/32.png) [@lfeistel](https://www.ruby-forum.com/u/lfeistel)\
**Post date:** [April 24, 2008, 10:07pm UTC](https://www.ruby-forum.com/t/cross-referenced-tables/135782/1 "2008-04-24T22:07:40Z")

</div>

Hi Guys,

I’m having a similar problem to someone earlier on the board, but the  
solutions posted aren’t working for me, so I figured I wouldn’t hijack  
the thread and started a new one:

I have an application that allows users to post updates, when they go to  
the homepage I want the users details and a list of their updates to  
show, however I’m having trouble with the find parameters.

Currently the model states that:

user has\_many: updates  
update belongs\_to:user

I think this is correct (and the right pluralisation)?

the controller for the index page looks like this:

def index  
@user = User.find(params[:id])  
@updates = Update.find(params[:id]).updates

end

as explained in a previous thread  
([You have a nil object - Rails - Ruby-Forum](http://www.ruby-forum.com/topic/150785))  
I’ve also tried the different permutations of  
@updates = Update.find(:all, :conditions =\>[“user\_id = ?”,

> params[:user\_id]])

When visiting the page I get this messageL

undefined method `updates’ for #Update:0xb7582750

Have I missed something rediculously obvious? this seems like it should  
be a fairly trivial thing to get working but I’m pretty new to the whole  
rails experience…

cheers,  
lee

---

<div class="post-metadata">

**Author:** ![lfeistel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/ecc23a/32.png) [@lfeistel](https://www.ruby-forum.com/u/lfeistel)\
**Post date:** [April 24, 2008, 10:12pm UTC](https://www.ruby-forum.com/t/cross-referenced-tables/135782/2 "2008-04-24T22:12:27Z")

</div>

On 24 Apr 2008, at 21:07, Lee F. wrote:

> show, however I’m having trouble with the find parameters.  
> def index  
> @user = User.find(params[:id])  
> @updates = Update.find(params[:id]).updates

I think you just wanted to write @user.updates assuming that  
params[:id] is the id of a user.

Fred

---

<div class="post-metadata">

**Author:** ![lfeistel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/ecc23a/32.png) [@lfeistel](https://www.ruby-forum.com/u/lfeistel)\
**Post date:** [April 24, 2008, 10:18pm UTC](https://www.ruby-forum.com/t/cross-referenced-tables/135782/3 "2008-04-24T22:18:20Z")

</div>

Thanks for the quick reply Fred!

the params [:id] is a users id yes, do you mean to change the controller  
to this:

def index  
@user = User.find(params[:id])  
@updates = @user.updates

end

this gave me an error of:

You have a nil object when you didn’t expect it!  
The error occurred while evaluating nil.date

with the lines:

Extracted source (around line #19):

16:

## Updates
  
  
17: \<% for column in Update.content\_columns %\>  
18: 

19: **\<%= column.human\_name %\>:** \<%=h @update.send(column.name) %\>  
20:

  
21: \<% end %\>  
22:

(which is where it begins outputting update information)

could this point at an error somewhere else in my code (if its  
important, the app is mostly standard scaffold code)  
Frederick C. wrote:

> On 24 Apr 2008, at 21:07, Lee F. wrote:
> 
> > show, however I’m having trouble with the find parameters.  
> > def index  
> > @user = User.find(params[:id])  
> > @updates = Update.find(params[:id]).updates
> 
> I think you just wanted to write @user.updates assuming that  
> params[:id] is the id of a user.
> 
> Fred

---

<div class="post-metadata">

**Author:** ![lfeistel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/ecc23a/32.png) [@lfeistel](https://www.ruby-forum.com/u/lfeistel)\
**Post date:** [April 24, 2008, 10:25pm UTC](https://www.ruby-forum.com/t/cross-referenced-tables/135782/4 "2008-04-24T22:25:44Z")

</div>

btw, I just realised I was calling it @updates in the controller and  
@update in the view, I fixed this and got a shiny new error:

undefined method `date’ for Update:Class

Extracted source (around line #19):

16:

## Updates
  
  
17: \<% for column in Update.content\_columns %\>  
18: 

19: **\<%= column.human\_name %\>:** \<%=h @updates.send(column.name)  
%\>  
20:

  
21: \<% end %\>  
22:

date is a field name in the updates table.

cheers,  
Lee

---

<div class="post-metadata">

**Author:** ![lfeistel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/ecc23a/32.png) [@lfeistel](https://www.ruby-forum.com/u/lfeistel)\
**Post date:** [April 24, 2008, 10:38pm UTC](https://www.ruby-forum.com/t/cross-referenced-tables/135782/5 "2008-04-24T22:38:34Z")

</div>

at the risk of this becoming a monologue… I’ve fixed the problem

19: **\<%= column.human\_name %\>:** \<%=h @updates.send(column.name)

needed to be

19: **\<%= column.human\_name %\>:** \<%=h update.send(column.name)

cheers for the help explaining how to reference the tables Fred!
