Hi Dominic, Ah – everything is much more clear now. What you're describing is a fairly core behavior of Rails. Associations are indeed the right way to go here.
For example, say you have an extension called Ages, which you would create with "script/generate extension Ages". In the extension, you have a model, AgeGroup (created with "script/generate extension_model Ages AgeGroup"). The create_table part of the migration for AgeGroup might look something like (note that none of these examples have been tried yet, so I may have minor syntax errors): create_table do |t| t.column :min, :integer t.column :max, :integer end and the class might look like: class AgeGroup < ActiveRecord::Base has_many :pages end and somewhere else (either <extension dir>/app/models or <extension dir>/lib) have something like: module PageExtension belongs_to :age_group end Page.send(:include, AgePageExtension) You should explicitly require this file in your age_extension.rb. Of course, you'll need a migration to alter pages to have an :age_group_id column (and you'll probably want an index on that too). You'll also need a controller for Admin-ing the age_groups table. It should be simple CRUD operations, which other extensions cover pretty well. After you understand that, it's time to move on to something a little more complicated: To actually display the information, my recommendation is to do something similar to the ArchivePages. Have one page that lists all of the age groups with links to a child page for each age group. The child pages would actually be a single virtual page that gets the age-group specified in the URL. Although code-blindness will hurt here, I recommend you look at radiant/app/models/archive_page.rb, radiant/app/models/archive_*_index_page.rb and radiant/lib/archive_index_tags_and_methods.rb for an idea of what I'm talking about. The most important things are that ArchivePage overrides child_url (the method responsible for making a url for a page's child) and find_by_url (the method responsible for returning a Page to render). Also, tags are a good thing for dynamic content (such as a list of pages for a certain age group). Hope this helps, Andrew On Dec 10, 2007 7:05 PM, <[EMAIL PROTECTED]> wrote: > Hi Andrew, > > Thank you for replying, I've been looking through the extensions as > you say, but can't really see anything close enough to what I want to > do in this particular case (from my limited knowledge). I think one of > the closest is perhaps Author, where the ID of the author name gets > entered in to the page table under the created_by column and the > Author Name gets returned from the ID on the pages table by it tag. > Its the connection between the local id and the foreign name that I > think I need to look up. > > I'm a bit code-blind after all the code I've been looking at and > learning over the past few day's, however I now think I have to > investigate associations and belongs_to in order to do the above for > my extension. If I'm heading down the wrong path someone please tell > me! Hopefully I'll have a fresh look at it tomorrow, I'm hoping its > just a simple concept I have yet to digest... > > I'm voluntarily building a site for a local theatre company as a > project to learn ruby/rails/radiant, so I'm learning as I go (in at > the deep end), the min_age and max_age aren't really connected to the > other date extension I am doing. This one is just going to be a used > as an aid to find pages for particular age groups (and to show those > values on the particular events). I don't think having two values will > prove to be the final/best solution, as a single multiple select > option box may be a better method to achieve the same ends, but this > part is working passably for now. > > The previous example which you so kindly helped with was based on > Sean's great Schedular extension. It adds start and end dates for > event pages (which are slightly different from publish dates in my > case), it also enables those values to be displayed on the page and to > order by them. As the information is stored directly on the page table > it is relatively easy for me to access it directly, the trouble I am > currently facing is matching a ID of one thing to a value in a > different DB table. > > If anyone can point a good direction to look at for research that > would be great. > > Thanks once again > > > > On 10 Dec 2007, at 22:41, Andrew O'Brien wrote: > > > I'm not quite sure what you're trying to do. My recommendation is to > > check http://wiki.radiantcms.org/Thirdparty_Extensions for existing > > extensions. Even if they don't have what you want, there's usually > > some good examples. > > > > Incidentally, are you trying to do something like delayed publishing, > > where a page has to be a certain age before it's visible, and it > > expires after a certain age? Or am I completely misunderstanding your > > age_min and age_max examples... If that's what you're trying to do, > > check out the Scheduler extension. > > > > -Andrew > > > > On Dec 10, 2007 6:41 AM, <[EMAIL PROTECTED]> wrote: > >> Hello again, > >> > >> I'm attempting to write a couple of extensions, and have what is > >> hopefully a quick question. > >> > >> I have an extension that creates a table for age and extends pages > >> with two columns age_min, and age_max. From the edit page I can post > >> the id's of age into age_min and age_max, and from the actual page > >> can > >> return the values of those id's. However, I would like to return the > >> name value connected to those id's in age and not the actual id > >> itself. > >> > >> What would be a good example to look at, in order to achieve the > >> above? > >> > >> Many thanks, > >> > >> Dominic > >> _______________________________________________ > >> Radiant mailing list > >> Post: [email protected] > >> Search: http://radiantcms.org/mailing-list/search/ > >> Site: http://lists.radiantcms.org/mailman/listinfo/radiant > >> > > _______________________________________________ > > Radiant mailing list > > Post: [email protected] > > Search: http://radiantcms.org/mailing-list/search/ > > Site: http://lists.radiantcms.org/mailman/listinfo/radiant > > _______________________________________________ > Radiant mailing list > Post: [email protected] > Search: http://radiantcms.org/mailing-list/search/ > Site: http://lists.radiantcms.org/mailman/listinfo/radiant > _______________________________________________ Radiant mailing list Post: [email protected] Search: http://radiantcms.org/mailing-list/search/ Site: http://lists.radiantcms.org/mailman/listinfo/radiant
