Performance.

Lets, say you are listing a set of folders on a page and you want to
display the number of files in each folder.  So you would use
something like

<%= folder.files.size() %>

With the classic foreign key relation then for every folder you will
get an SQL query like "select count(files.id) from files where
files.folder_id = '#{folder.id}'" to determine the result of the size
() method.  This is no problem for 5 folders and a file table of a
couple of thousand records but if you are displaying 30 folders and
the file table contains 200 million records then its a performance
bottleneck.  You could add an index on the files.folder_id to the
files table to speed up each search but it will still take a while.

If the 'folder.files' element was an array of ids then there would be
no subsequent database access to determine the size() value.

regards
damian

On Mar 29, 12:46 am, Matt Jones <al2o...@gmail.com> wrote:
> You could possibly do this, but why would you want to?
>
> You'll probably want to look into the ActiveRecord docs related to
> virtual attributes, and possibly serialized fields.
>
> But again, WHY? The foreign key -> parent relation is practically as
> old as databases, and going against that current is only going to land
> you on TheDailyWTF...
>
> --Matt Jones
>
> On Mar 27, 5:33 pm, "Paul A." <rails-mailing-l...@andreas-s.net>
> wrote:
>
> > Hi,
>
> > I would like to make a relation using a different way then the classic
> > belongs_to/has_many association. Instead of this, I would like to save
> > the foreign key in the parent class as a list of ids.
>
> > For instance, we can consider 2 models: File and Folder.
> > Basically, we could add in File model this method: folder_id.
>
> > But can we do the same with a list of file's ids stored in this folder's
> > method: file_ids?

--~--~---------~--~----~------------~-------~--~----~
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@googlegroups.com
To unsubscribe from this group, send email to 
rubyonrails-talk+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to