Hello all, As I've gotten more comfortable using rails, I've noticed some things that I seem to be doing over and over. I think a fair number of the issues I run across have come about because the default scaffolding doesn't quite do everything I want (although it is still pretty slick, nonetheless). I know scaffolding isn't supposed to be the final code, but if I could do a few more things with it, I could probably keep more of what gets generated. I wanted to run these items by the group before I try to write scripts to handle them, as I imagine I'm probably not the first. Here's the issues: 1) The model generator doesn't infer relationships with other tables - it looks like it should be pretty straightforward to loop through the other tables and look for cases where a) tablename_id is a field b) the current table contains the name of another table and id and c) where another table contains tablename_id and another table's id. In other words, I'd like it to infer the a) has_many b) belongs_to c)has_and_belongs_to_many relationships. 2) The code that generates the list view should: a) Loop through the table fields at generation time, rather than runtime. b) It should be smart enough to take any foreign key fields and make them point to a more descriptive value (in other words, it should pull back the name property from Customer instead of Customer_id when displaying an invoice). c) The table should be given an appropriate CSS class, as should the headers, data fields, etc. 3) The code that generates the fields for the edit/list view should be improved by: a) If it sees something that appears to be a foreign key to another table, it should automatically generate a dropdown control for selecting the value in a more friendly way. You could have it pull in the name field automatically, for example. b) If it sees a boolean field, it should generate a checkbox c) If it sees a field named password, it should automatically make it a password textbox d) Would it be possible to make it load the associated model class dynamically as the script is running? If so, it might be possible to determine the items that are contained by object (has_many relationships) and provide UI for them. You might even be able to do the same for has_and_belongs_to_many relationships. e) Long text fields should automatically get a Text Area control f) Fields should be enclosed in a fieldset, with an appropriate CSS class set for the fieldset and an appropriate legend (no underscores) g) Field labels should be actual labels, with the "for" attribute set for accessibility. Does anyone have anything else they would add? Does anyone have fixes for the stuff I just listed? Thanks, Will --------------------------------- Get the Yahoo! toolbar and be alerted to new email wherever you're surfing.
on 2007-06-28 16:21