Clem Rock
2006-Dec-16 21:30 UTC
Help w/ pulling data from 2 tables and displaying the result
results_1 = select first_name, user_id from table 1; Hello, I''m brand new to ruby and I''m having trouble pulling data from one table (table_1), looping through the results and pulling data from another table (table_2) and displaying the results of table_2 in one field. the pseudo code would be as follows: [code] loop results_1 { puts "<tr><td> results_1.first_name<td>" results_2 = select table_2.info from table_2 where table_1.user_id table_2.user_id; puts "<td>" loop results_2 { puts "<li>table_2.info } puts "</td>" } [/code] The display would look like this for 1 row: joe | -info 1 -info 2 -info 3 Help - I''m desparate! -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Aaron
2006-Dec-17 06:23 UTC
Re: Help w/ pulling data from 2 tables and displaying the result
Clem, You will likely find it easier and more efficient to offload some of the work the the models and controller. It looks like what you want to do is print out data from two table that have a beongs_to/has_many relationship. Here is a basic example: Models: class Person < ActiveRecord::Base has_many :addresses # addresses is plural b/c their can be more than one end class Address < ActiveRecord::Base belongs_to :person # person is singular b/c their can be only one end Controller: class PersonController < ApplicationController def list # use :include to load all the people and their addresses with one database query (join) @people = Person.find(:all, :include => :addresses) end end View: <% for person in @people -%> <%= person.name %><br /> <% for address in @person.addresses -%> <%= "#{address.street}, #{address.city}, #{address.state}, #{address.zip} %><br /> <% end -%> <% end -%> You could also use partials to construct the view making you code more reusable (you can call the same partial from somewhere else). View with partials: <%= render :partial => ''person'', :collection => @people %> _person partial: <%= person.name %><br /> <%= render :partial => ''address'', :collection => person.addresses %> _address partial: <%= "#{address.street}, #{address.city}, #{address.state}, #{address.zip} %><br /> Hope this gets you going in the right direction. Aaron On Dec 16, 2:30 pm, Clem Rock <rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> results_1 = select first_name, user_id from table 1; > > Hello, > > I''m brand new to ruby and I''m having trouble pulling data from one > table (table_1), looping through the results and pulling data from > another table (table_2) and displaying the results of table_2 in one > field. > > the pseudo code would be as follows: > > [code] > loop results_1 > { > puts "<tr><td> results_1.first_name<td>" > > results_2 = select table_2.info from table_2 where table_1.user_id > table_2.user_id; > > puts "<td>" > loop results_2 > { > puts "<li>table_2.info > } > puts "</td>"}[/code] > > The display would look like this for 1 row: > > joe | -info 1 > -info 2 > -info 3 > > Help - I''m desparate! > > -- > Posted viahttp://www.ruby-forum.com/.--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Clem Rock
2006-Dec-17 22:05 UTC
Re: Help w/ pulling data from 2 tables and displaying the re
Aaron, Thanks for getting back to me on this. I''ve been reading about this aproach and I''ve tried to implemented it in my project. The 2 tables I have are accounts and spaces. The accounts table will have many spaces connecting the 2 tables by the foreign key user_id. so I tried my 2 model declarations as follow: [code] class Account < ActiveRecord::Base has_many :spaces end class Space < ActiveRecord::Base belongs_to :account end [/code] Then I try to call the 2 tables w/ this: [code] @accounts = Account.find(:all, :include => :spaces ) [/code] Then I get this error: Unknown column ''spaces.account_id'' in ''on clause'': Somehow - it was getting the idea that account_id was the foreign key so I did this: [code] class Account < ActiveRecord::Base has_many :spaces, :class_name => ''Account'', :foreign_key => "user_id" end class Space < ActiveRecord::Base belongs_to :account, :class_name => ''Space'', :foreign_key => "user_id" end [/code] Then I try to call the 2 tables w/ this: [code] @accounts = Account.find(:all, :include => :spaces ) [/code] and now I get this error: undefined method `loaded'' Most frustrating! Aaron wrote:> Clem, > > You will likely find it easier and more efficient to offload some of > the work the the models and controller. It looks like what you want to > do is print out data from two table that have a beongs_to/has_many > relationship. Here is a basic example: > > Models: > class Person < ActiveRecord::Base > has_many :addresses # addresses is plural b/c their can be more than > one > end > > class Address < ActiveRecord::Base > belongs_to :person # person is singular b/c their can be only one > end > > Controller: > class PersonController < ApplicationController > def list > # use :include to load all the people and their addresses with one > database query (join) > @people = Person.find(:all, :include => :addresses) > end > end > > View: > <% for person in @people -%> > <%= person.name %><br /> > <% for address in @person.addresses -%> > <%= "#{address.street}, #{address.city}, #{address.state}, > #{address.zip} %><br /> > <% end -%> > <% end -%> > > You could also use partials to construct the view making you code more > reusable (you can call the same partial from somewhere else). > > View with partials: > <%= render :partial => ''person'', :collection => @people %> > > _person partial: > <%= person.name %><br /> > <%= render :partial => ''address'', :collection => person.addresses %> > > _address partial: > <%= "#{address.street}, #{address.city}, #{address.state}, > #{address.zip} %><br /> > > Hope this gets you going in the right direction. > > Aaron-- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Firstly, why are you refering to the user_id in the foreign key assignments for accounts and spaces? Second, why not just create the "account_id" column in your "spaces" table? Rails can then "magically" work out the rest. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Clem Rock
2006-Dec-17 22:19 UTC
Re: Help w/ pulling data from 2 tables and displaying the re
This is a huge project I am building an addition to and I don''t want to start modifying database tables to fit the need of one tiny module especially when we have the natural linkage of user_id in both the accounts and spaces table. askegg wrote:> Firstly, why are you refering to the user_id in the foreign key > assignments for accounts and spaces? > > Second, why not just create the "account_id" column in your "spaces" > table? Rails can then "magically" work out the rest.-- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
OK. In the first instance you have described a relationship that would make rails expect to see "account_id" in the spaces table, but the attempted fix brings "user_id" into the mix. What is the schema of the database for these 2 (3?) models? The above example seems to suggest: class Account < ActiveRecord::Base has_many :spaces, :through => :user end or similar.... On Dec 18, 9:19 am, Clem Rock <rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> This is a huge project I am building an addition to and I don''t want to > start modifying database tables to fit the need of one tiny module > especially when we have the natural linkage of user_id in both the > accounts and spaces table. > > askegg wrote: > > Firstly, why are you refering to the user_id in the foreign key > > assignments for accounts and spaces? > > > Second, why not just create the "account_id" column in your "spaces" > > table? Rails can then "magically" work out the rest.-- > Posted viahttp://www.ruby-forum.com/.--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Clem Rock
2006-Dec-18 05:42 UTC
Re: Help w/ pulling data from 2 tables and displaying the re
askegg wrote:> OK. > > In the first instance you have described a relationship that would make > rails expect to see "account_id" in the spaces table, but the attempted > fix brings "user_id" into the mix. What is the schema of the database > for these 2 (3?) models? > > The above example seems to suggest: > > class Account < ActiveRecord::Base > has_many :spaces, :through => :user > end > > or similar....When I try this I then get another error message: Unknown column ''users.user_id'' in ''on clause'': I also tried this, which seemed more than logical: [code] class Account < ActiveRecord::Base has_many :spaces, :foreign_key => "user_id" end class Space < ActiveRecord::Base belongs_to :account, :foreign_key => "user_id" end [/code] and then I get this error: undefined method `loaded'' I''m ready to scream! -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
I am not sure I am following this or completely understanding how it''s all stuck together. Can you post the schema for these tables from you database? The models might come in handy to.... Your examples seem to suggest the following (psudeo code): Account Table--- id, :int name, :string .... end Spaces Table -- id, :int name, :string account_id, :int end By specifying the foreign key the way you have, changes the spaces table to: Spaces Table -- id, :int name, :string user_id, :int end BUT, your mention of user_id leads me to suspect the following: Account Table--- id, :int name, :string user_id, :int .... end Spaces Table -- id, :int name, :string user_id, :int end UserTable--- id, :int name, :string .... end In which case the models would actually be: class Account < ActiveRecord::Base belongs_to :user has_many :spaces, :through => :user end class Space < ActiveRecord::Base belongs_to :user end class User < ActiveRecord::Base has_many :accounts has_many :spaces end UNLESS "accounts" really means "users" and the tables/class name are actually different. See why we need the models and schema? On Dec 18, 4:42 pm, Clem Rock <rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> askegg wrote: > > OK. > > > In the first instance you have described a relationship that would make > > rails expect to see "account_id" in the spaces table, but the attempted > > fix brings "user_id" into the mix. What is the schema of the database > > for these 2 (3?) models? > > > The above example seems to suggest: > > > class Account < ActiveRecord::Base > > has_many :spaces, :through => :user > > end > > > or similar....When I try this I then get another error message: > Unknown column ''users.user_id'' in ''on clause'': > > I also tried this, which seemed more than logical: > > [code] > class Account < ActiveRecord::Base > has_many :spaces, :foreign_key => "user_id" > end > > class Space < ActiveRecord::Base > belongs_to :account, :foreign_key => "user_id" > end > [/code] > > and then I get this error: undefined method `loaded'' > > I''m ready to scream! > > -- > Posted viahttp://www.ruby-forum.com/.--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Clem Rock
2006-Dec-18 06:12 UTC
Re: Help w/ pulling data from 2 tables and displaying the re
askegg wrote:> OK. > > In the first instance you have described a relationship that would make > rails expect to see "account_id" in the spaces table, but the attempted > fix brings "user_id" into the mix. What is the schema of the database > for these 2 (3?) models? > > The above example seems to suggest: > > class Account < ActiveRecord::Base > has_many :spaces, :through => :user > end > > or similar....When I try this I then get another error message: Unknown column ''users.user_id'' in ''on clause'': I also tried this, which seemed more than logical: [code] class Account < ActiveRecord::Base has_many :spaces, :foreign_key => "user_id" end class Space < ActiveRecord::Base belongs_to :account, :foreign_key => "user_id" end [/code] and then I get this error: undefined method `loaded'' I''m ready to scream! -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
On Dec 17, 3:19 pm, Clem Rock <rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> This is a huge project I am building an addition to and I don''t want to > start modifying database tables to fit the need of one tiny module > especially when we have the natural linkage of user_id in both the > accounts and spaces table.In a has_many/belongs_to relationship rails expects the belongs_to table to contain a foreign key that matches the primary key of the has_many table. That''s why it came up with an error looking for account_id.>From reading your entry is sounds like both the Space and Accountmodels reference User but do not reference each other directly. Maybe something like this will work: class User < ActiveRecord::Base has_many :spaces has_many :accounts end class Space < ActiveRecord::Base belongs_to :user has_many :accounts, :through => :user end class Account < ActiveRecord::Base belongs_to :user has_many :spaces, :through => :user end Then: # load spaces for a single account @account.spaces # load all accounts and their related spaces Account.find(:all, :include => :spaces) (warning: I''ve never tried using a through table with has_many relationships in this direction. From the API it looks like this should work.) Aaron --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Clem Rock
2006-Dec-18 06:42 UTC
Re: Help w/ pulling data from 2 tables and displaying the re
askegg wrote:> I am not sure I am following this or completely understanding how it''s > all stuck together. > Can you post the schema for these tables from you database? > The models might come in handy to.... >Again thanks so much for your help. You are exactly right on your assumptions about the layout of the 3 tables. Here''s the declarations of the 3 models to show you how complex this site is: ==== Account =====================================================================================class Account < ActiveRecord::Base include ActionView::Helpers::NumberHelper belongs_to :user has_one :form_of_payment, :dependent => :destroy has_one :account_plan, :dependent => :destroy has_many :entries, :dependent => :delete_all, :order => ''created_at, id'' has_many :spaces, :foreign_key => "user_id" has_many :payments, :class_name => Entry, :conditions => "code = ''payment''", :order => ''created_at, id'' has_many :charges, :class_name => Entry, :conditions => "code = ''charge''", :order => ''created_at, id'' has_many :credits, :class_name => Entry, :conditions => "code = ''credit''", :order => ''created_at, id'' has_many :debits, :class_name => Entry, :conditions => "code = ''debit''", :order => ''created_at, id'' ================================================= ==== Spaces ======================================================================================belongs_to :user belongs_to :account, :foreign_key => "user_id" #****** belongs_to :owner, :class_name => ''User'', :foreign_key => ''owner_id'' belongs_to :home_page, :class_name => ''WikiPage'', :foreign_key => ''home_page_id'' has_many :folders, :dependent => :destroy has_many :folder_items, :dependent => :destroy has_many :box_sets, :dependent => :destroy has_many :boxes, :dependent => :destroy has_one :root_folder has_one :trash_folder has_one :articles_folder has_one :wiki_pages_folder has_one :public_category, :class_name => ''Category'', :conditions => "title = ''Public''" has_one :uncategorized_category, :class_name => ''Category'', :conditions => "title = ''Uncategorized''" has_many :pages, :dependent => :destroy has_many :articles, :dependent => :destroy, :conditions => "type = ''Article''" has_many :wiki_pages, :dependent => :destroy, :conditions => "type = ''WikiPage''" has_many :dailies, :dependent => :delete_all has_many :categories, :dependent => :destroy has_many :space_resources, :dependent => :destroy, :conditions => "type = ''SpaceResource''" has_many :attachments, :dependent => :destroy, :conditions => "type = ''Attachment''" has_many :space_files, :dependent => :destroy, :conditions => "type = ''SpaceFile''" has_many :searches, :dependent => :delete_all has_many :page_semaphores, :dependent => :delete_all has_many :memberships, :dependent => :destroy has_many :tabs, :order => ''position asc'', :dependent => :delete_all has_many :preferences, :dependent => :delete_all has_many :invites, :dependent => :delete_all has_many :comments, :dependent => :destroy has_many :trackbacks, :dependent => :destroy has_many :events, :dependent => :destroy has_many :activities, :dependent => :delete_all has_many :bookmarks, :dependent => :delete_all has_many :members, :class_name => ''User'', :through => :memberships, :source => :user has_one :calendar, :dependent => :destroy has_one :blog_roll, :dependent => :destroy has_space_resource :logo_resource has_space_resource :banner_resource has_space_resource :stylesheet_resource has_space_resource :favicon_resource has_one :anonymous_membership, :class_name => ''Membership'', :conditions => ''memberships.user_id = #{User.anonymous_user.id}'' has_one :prototype_membership, :class_name => ''Membership'', :conditions => ''memberships.user_id = #{User.prototype_user.id}'' ================================================= ==== users =======================================================================================belongs_to :last_space, :class_name => ''Space'', :foreign_key => ''last_space_id'' has_one :account, :dependent => :destroy has_many :spaces, :dependent => :destroy has_many :owned_spaces, :class_name => ''Space'', :foreign_key => ''owner_id'', :conditions => ''closed_on IS NULL'' has_many :pages, :dependent => :destroy has_many :comments, :dependent => :delete_all has_many :resources, :dependent => :destroy has_many :events, :dependent => :destroy has_many :memberships, :dependent => :destroy has_many :preferences, :dependent => :delete_all has_many :page_semaphores, :dependent => :delete_all has_many :activities ================================================= This gives you an idea of why my mind is blown. One questionable line of code in the User class model is this: has_one :account, :dependent => :destroy has_many :spaces, :dependent => :destroy I don''t know how this could effect the joining of the tables. Argh!!! Your examples seem to suggest the following (psudeo code):> > Account Table--- > id, :int > name, :string > .... > end > > Spaces Table -- > id, :int > name, :string > account_id, :int > end > > By specifying the foreign key the way you have, changes the spaces > table to: > > Spaces Table -- > id, :int > name, :string > user_id, :int > end > > BUT, your mention of user_id leads me to suspect the following: > > Account Table--- > id, :int > name, :string > user_id, :int > .... > end > > Spaces Table -- > id, :int > name, :string > user_id, :int > end > > UserTable--- > id, :int > name, :string > .... > end > > In which case the models would actually be: > > class Account < ActiveRecord::Base > belongs_to :user > has_many :spaces, :through => :user > end > > class Space < ActiveRecord::Base > belongs_to :user > end > > class User < ActiveRecord::Base > has_many :accounts > has_many :spaces > end > > UNLESS "accounts" really means "users" and the tables/class name are > actually different. > > See why we need the models and schema?-- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
OK. What do the relevant parts of the database tables look like? --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Clem Rock
2006-Dec-18 07:41 UTC
Re: Help w/ pulling data from 2 tables and displaying the re
askegg wrote:> OK. > > What do the relevant parts of the database tables look like?Really - these are the only linkages between the tables: ==== users ===================id ============================== ==== accounts ================user_id ============================== ==== spaces ==================user_id ============================== from accounts, I just need to display the first_name, last_name field and from spaces, I just need to display the title field Thanks again - you''ve been great -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Hmmm. If I am reading this right, the relationship between Accounts and Spaces is through Users, so: class Account < ActiveRecord::Base belongs_to :user has_many :spaces, :through => :users Spaces belongs to User and Account (but through User as there is no account_id field), so: class Spaces < ActiveRecord::Base belongs_to :user belongs_to :account, :through => :user # Not sure how this inforces only 1 account. belongs_to :owner, :class_name => ''User'', :foreign_key => ''owner_id'' # this makes the above a kind of double up ? Users have one Account and many Spaces (both direct and through Accounts), so: class User < ActiveRecord::Base belongs_to :last_space, :class_name => ''Space'', :foreign_key => ''last_space_id'' ###??? Belongs_to or Has_many? Man, this gets confusing.... has_one :account, :dependent => :destroy has_many :spaces, :dependent => :destroy has_many :owned_spaces, :through => :accounts, :class_name => ''Space'', :foreign_key => ''owner_id'', :conditions => ''closed_on IS NULL'' ### Not sure about this.. Wow - I need to sit down, have a stiff drink and try to draw this one! In any case, given the models you should be able to do this: UserController def list @users = User.find(:all) end UserView <% @users.each do |user| %> <tr> <td> <%= user.first_name %><%= user.last_name %> </td> <ul> <% user.spaces.each do |space| %> <li><%= space.title %></li> <% end %> </ul> <% end %> --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Clem Rock
2006-Dec-18 21:03 UTC
Re: Help w/ pulling data from 2 tables and displaying the re
Ok - I finally buckled down and asked a couple of questions and there was a method in the accounts model that was killing this whole concept: def spaces spaces = Space.find :all, :conditions => [''owner_id = ?'', self.user_id] end now - this works perfectly! @accounts = Account.find(:all, :include => :spaces, :limit => 20) So - We were both on the right track, it was just that there was something from the outside that was killing it. Thanks so much for your time - I learned a massive amount from these posts! Cheers! askegg wrote:> Hmmm. > > If I am reading this right, the relationship between Accounts and > Spaces is through Users, so: > class Account < ActiveRecord::Base > belongs_to :user > has_many :spaces, :through => :users > > Spaces belongs to User and Account (but through User as there is no > account_id field), so: > class Spaces < ActiveRecord::Base > belongs_to :user > belongs_to :account, :through => :user # Not sure how this inforces > only 1 account. > belongs_to :owner, :class_name => ''User'', :foreign_key => ''owner_id'' > # this makes the above a kind of double up ? > > Users have one Account and many Spaces (both direct and through > Accounts), so: > class User < ActiveRecord::Base > belongs_to :last_space, :class_name => ''Space'', :foreign_key => > ''last_space_id'' ###??? Belongs_to or Has_many? Man, this gets > confusing.... > has_one :account, :dependent => :destroy > has_many :spaces, :dependent => :destroy > has_many :owned_spaces, :through => :accounts, :class_name => > ''Space'', :foreign_key => > ''owner_id'', :conditions => ''closed_on IS NULL'' ### Not sure about > this.. > > Wow - I need to sit down, have a stiff drink and try to draw this one! > > In any case, given the models you should be able to do this: > > UserController > def list > @users = User.find(:all) > end > > UserView > <% @users.each do |user| %> > <tr> <td> <%= user.first_name %><%= user.last_name %> </td> > <ul> > <% user.spaces.each do |space| %> > <li><%= space.title %></li> > <% end %> > </ul> > <% end %>-- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Andrew Skegg
2006-Dec-18 22:15 UTC
Re: Help w/ pulling data from 2 tables and displaying the re
Ahhh - that would have been killing the "Account has_many :spaces" relationship. Glad to hear it was a productive exercise. My guess is that there will be a lot of code you will now refactor as a result of this :) Good luck with the application - it certainly look complex enough. AS -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Clem Rock
2006-Dec-18 22:21 UTC
Re: Help w/ pulling data from 2 tables and displaying the re
Yeah - it was a huge amount of learning and I don''t feel so bad because that would have been nearly impossible to debug unless you were a black belt or you actually wrote the program like the guy I asked. And he''s probably the best programmer I''ve ever met so the learning curve on his code is going to be steep. Thanks again! Andrew Skegg wrote:> Ahhh - that would have been killing the "Account has_many :spaces" > relationship. > > Glad to hear it was a productive exercise. My guess is that there will > be a lot of code you will now refactor as a result of this :) > > Good luck with the application - it certainly look complex enough. > > AS-- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---