Paul it isn't that active scaffold forces you to "think through the
associations".

With the code example that I posted, somebody needed that functionality and
asked to add it to active scaffold.  That doesn't mean that you should use
these associations.

The way that I think something like this would be most useful if you had

User
  has_many :cars

and then on my view I would want to be able to say that there is a car_make
select box that narrows down the cars select box.  But you would not
actually store the car_make information on the user table.




On Fri, Aug 21, 2009 at 10:16 AM, Paul Hamann <[email protected]> wrote:

>
> Kenny Ortmann was kind enough to put this up for me last night.
>
> http://github.com/yairgo/dynamic_selects/tree/master
>
> I think the problem I was having was in understanding why I need the third
> table. If I have a one-to-many relationship, isn't a foreign key in the
> child table sufficient to describe the relationship?  If it were HABTM, I
> would need a join table like authors_books.  Why do I need the users table
> to store keys in this example?
>
> Sorry for asking such a noob question.  One observation that I have on AS
> is that it forces you to really think through the associations.
>
> Cheers! Paul
>
>
> --- On Fri, 8/21/09, Sergio Cambra .:: entreCables S.L. ::. <
> [email protected]> wrote:
>
> > From: Sergio Cambra .:: entreCables S.L. ::. <[email protected]>
> > Subject: Re: Yet another question on dynamic selects
> > To: [email protected]
> > Date: Friday, August 21, 2009, 12:48 AM
> >
> > On Jueves, 20 de Agosto de 2009 18:39:07 Paul Hamann
> > escribió:
> > > I just want "Hello world" for a chained fields
> > example.
> > >
> > > On the old Active Scaffold site, there was a 'demos'
> > section.  That section
> > > included code for common yet complicated scenarios. I
> > would like something
> > > similar for chaining fields.  Many others have
> > sought the same thing from
> > > what I've seen while Googling.
> > >
> > > And FWIW, here's some philosophy.  I've seen many
> > software companies and
> > > projects fail for misunderstanding one fact.  80%
> > of potential developers
> > > only have 20% of the skills.  That 80% learns
> > through copy/paste of working
> > > examples. Focus on providing better samples to work
> > with, and you will
> > > increase your addressable market by 400%.
> >
> > Here is an example, I haven't tried it, but I think it will
> > work:
> >
> > script/generate resource author name:string
> > script/generate resource book author:references
> > name:string
> > script/generate resource user name:string
> > favourite_author:references favourite_book:references
> >
> > # app/models/book.rb:
> > class Book < ActiveRecord::Base
> >   belongs_to :author
> >   has_many :users, :foreign_key =>
> > 'favourite_book_id'
> > end
> >
> > # app/models/author.rb:
> > class Author < ActiveRecord::Base
> >   has_many :books
> >   has_many :users, :foreign_key =>
> > 'favourite_author_id'
> > end
> >
> > # app/models/user.rb:
> > class User < ActiveRecord::Base
> >   belongs_to :favourite_author, :class => 'Author'
> >   belongs_to :favourite_book, :class => 'Book'
> > end
> >
> > # app/controllers/authors_controller.rb
> > class AuthorsController < ApplicationController
> >   active_scaffold
> > end
> >
> > # app/controllers/books_controller.rb
> > class BooksController < ApplicationController
> >   active_scaffold
> > end
> >
> > # app/controllers/users_controller.rb
> > class UsersController < ApplicationController
> >   active_scaffold do |config|
> >     config.columns[:favourite_author].form_ui =
> > :select
> >     config.columns[:favourite_author].options =
> > {:update_column => :favourite_book}
> >     config.columns[:favourite_book].form_ui =
> > :select
> >   end
> > end
> >
> > # app/helpers/users_helper.rb
> > class UsersHelper
> >   def options_for_association_conditions(association)
> >     if association.name == :favourite_book
> >       {'books.author_id' =>
> > @record.author_id}
> >     else
> >       super
> >     end
> >   end
> > end
> >
> > >
> > > Thanks! Paul
> > >
> > > --- On Thu, 8/20/09, Sergio Cambra .:: entreCables
> > S.L. ::. <[email protected]>
> > wrote:
> > > > From: Sergio Cambra .:: entreCables S.L. ::.
> > <[email protected]>
> > > > Subject: Re: Yet another question on dynamic
> > selects
> > > > To: [email protected]
> > > > Date: Thursday, August 20, 2009, 9:11 AM
> > > >
> > > > On Jueves, 20 de Agosto de 2009 17:59:16 Paul
> > Hamann
> > > >
> > > > escribió:
> > > > > I ended up with a rather contrived example
> > after
> > > >
> > > > looking at too many code
> > > >
> > > > > samples.  I really just want "Hello
> > world."
> > > >
> > > > You are trying something harder thant Hello
> > world. A hello
> > > > world example
> > > > shouldn't use chained fields in my opinion.
> > > >
> > > > > For survey, there are n number of surveys.
> > > >
> > > > Surveys have n number of survey
> > > >
> > > > > questions. When a specific survey is
> > selected, the
> > > >
> > > > questions for that
> > > >
> > > > > survey show up as options in the second
> > select.
> > > >
> > > > Like I said, it's a bit
> > > >
> > > > > contrived.
> > > >
> > > > But you are setting that in survey create and
> > update forms.
> > > > Scenary you are
> > > > describing is easier, and more logical IMO, for a
> > model
> > > > with belongs_to
> > > >
> > > > :survey and belongs_to :survey_question
> > > > :
> > > > > Thanks for the help, Paul
> > > > >
> > > > > --- On Thu, 8/20/09, Sergio Cambra .::
> > entreCables
> > > >
> > > > S.L. ::.
> > > > <[email protected]>
> > > >
> > > > wrote:
> > > > > > From: Sergio Cambra .:: entreCables
> > S.L. ::.
> > > >
> > > > <[email protected]>
> > > >
> > > > > > Subject: Re: Yet another question on
> > dynamic
> > > >
> > > > selects
> > > >
> > > > > > To: [email protected]
> > > > > > Date: Thursday, August 20, 2009, 12:49
> > AM
> > > > > >
> > > > > > On Jueves, 20 de Agosto de 2009
> > 03:48:04 Paul
> > > >
> > > > Hamann
> > > >
> > > > > > escribió:
> > > > > > > Thanks again for all your help.
> > Sadly, I'm
> > > >
> > > > still
> > > >
> > > > > > missing something. [BTW,
> > > > > >
> > > > > > > there's a search_sql in the thread
> > example,
> > > >
> > > > but not in
> > > >
> > > > > > the wiki example?]
> > > > > >
> > > > > > > Here's the code:
> > > > > > >
> > > > > > > ============ schema
> > > >
> > > > ===============================
> > > >
> > > > > > >  create_table
> > "survey_questions",
> > > > :
> > > > :force =>
> > > > :
> > > > > > true do |t|
> > > > > >
> > > > > > >     t.integer
> > > > > >
> > > > > > "survey_id",
> >    :limit =>
> > > >
> > > > 11
> > > >
> > > > > > >     t.text
> > > > > >
> > > > > >    "question_text"
> > > > > >
> > > > > > >
> >    t.datetime
> > > >
> > > > "created_at"
> > > >
> > > > > > >
> >    t.datetime
> > > >
> > > > "updated_at"
> > > >
> > > > > > >   end
> > > > > > >
> > > > > > >   create_table
> > "surveys",
> > > > :
> > > > :force =>
> > > > :
> > > > > > true do |t|
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > t.string   "name"
> > > > > >
> > > > > > >
> >    t.datetime
> > > >
> > > > "created_at"
> > > >
> > > > > > >
> >    t.datetime
> > > >
> > > > "updated_at"
> > > >
> > > > > > >   end
> > > > > > >
> > > > > > > ============ Model: survey.rb
> > =========
> > > > > > >
> > > > > > > class Survey <
> > ActiveRecord::Base
> > > > > > >
> > > > > > >   has_many
> > :survey_questions
> > > > > > >
> > > > > > >   def to_tabel
> > > > > > >    "#{name}"
> > > > > > >   end
> > > > > > > end
> > > > > > >
> > > > > > > ============Model:
> > survey_question.rb ====
> > > > > > >
> > > > > > > class SurveyQuestion <
> > > >
> > > > ActiveRecord::Base
> > > >
> > > > > > >   belongs_to
> > :survey
> > > > > > >
> > > > > > >   def to_label
> > > > > > >    "#{question_text}"
> > > > > > >   end
> > > > > > > end
> > > > > > >
> > > > > > > =================
> > survey_helper.rb
> > > >
> > > > ==================
> > > >
> > > > > > > module SurveyHelper
> > > > > > >
> > > > > > >    def
> > > > > >
> > > > > >
> > options_for_association_conditions(association)
> > > > > >
> > > > > > >      if
> > association.name ==
> > > > > > >
> > > > > > :survey_question
> > > > > > :
> > > > > > >
> > > > > >
> > > > > >
> > {'survey_questions.survey_id' =>
> > > > > > @record.survey_id}
> > > > > >
> > > > > > >      else
> > > > > > >
> >    super
> > > > > > >      end
> > > > > > >    end
> > > > > > >
> > > > > > > end
> > > > > > >
> > > > > > > =============
> > survey_controller.rb
> > > > > >
> > > > > > =====================
> > > > > >
> > > > > > > class SurveyController <
> > > >
> > > > ApplicationController
> > > >
> > > > > > >  layout "default"
> > > > > > >  active_scaffold :survey
> > > > > > >
> > > > > > >  active_scaffold do |config|
> > > > > > >
> > > >
> > > >    config.columns[:name].form_ui
> > > >
> > > > > > = :select
> > > > > >
> > > > > > >
> > > >
> > > >    config.columns[:name].options
> > > >
> > > > > > = { :update_column =>
> > ':survey_question'
> > > > > >
> > > > > > > }
> > config.columns['question_text'].form_ui =
> > > > :
> > > > :select
> > > > :
> > > > > > >   end
> > > > > > > end
> > > > > >
> > > > > > form_ui select automatically fills the
> > options
> > > >
> > > > when column
> > > >
> > > > > > is an association
> > > > > > (neither name nor question_text are
> > > >
> > > > associations). You
> > > >
> > > > > > can't set question_text
> > > > > > form_ui from SurveyController because
> > that column
> > > >
> > > > belongs
> > > >
> > > > > > to SurveyQuestion
> > > > > > model, you should do it in
> > > >
> > > > SurveyQuestionsController.
> > > >
> > > > > > I don't understand what you want to
> > get. What
> > > >
> > > > options
> > > >
> > > > > > should be shown for
> > > > > > name?
> > > >
> > > >
> > ==========================================================
> > > >
> > > > > > > --- On Wed, 8/19/09, Kerry Foley
> > <[email protected]>
> > > > > >
> > > > > > wrote:
> > > > > > > > From: Kerry Foley <[email protected]>
> > > > > > > > Subject: Re: Yet another
> > question on
> > > >
> > > > dynamic
> > > >
> > > > > > selects
> > > > > >
> > > > > > > > To: [email protected]
> > > > > > > > Date: Wednesday, August 19,
> > 2009, 5:32
> > > >
> > > > PM
> > > >
> > > > > > > > It sounds like your column
> > name is
> > > >
> > > > incorrect. You
> > > >
> > > > > > didn't
> > > > > >
> > > > > > > > paste you're
> > > > > > > > code so I can't say for sure.
> > You
> > > >
> > > > should be doing
> > > >
> > > > > > something
> > > > > >
> > > > > > > > like
> > > > > > > >
> > config.columns[:project_type].form_ui =
> > > > :
> > > > :select
> > > > :
> > > > > > > > #belongs_to
> > > > > > > > or
> > > > > > > >
> > config.columns[:regions].form_ui =
> > > > > > > >
> > > > > > > >
> > :select   #has_many
> > > > > > > >
> > > > > > > > it shouldn't be "_id" - it's
> > the
> > > >
> > > > association
> > > >
> > > > > > name, not the
> > > > > >
> > > > > > > > column name.
> > > > > > > >
> > > > > > > > There are examples on the
> > wiki e.g
> > > >
> > > > Getting
> > > >
> > > > > > Started;
> > > > > >
> > > > > > > > http://wiki.github.com/activescaffold/active_scaffold
> > > > > > > >
> > > > > > > > You don't need to build the
> > select.
> > > > > > > >
> > > > > > > > I think there's a more or
> > less complete
> > > >
> > > > set of
> > > >
> > > > > > controller,
> > > > > >
> > > > > > > > model and
> > > > > > > > helper code for what you are
> > trying to
> > > >
> > > > do in the
> > > >
> > > > > > thread
> > > > > >
> > > > > > > > previously sent.
> > > > > > > >
> > > > > > > >
> http://groups.google.com/group/activescaffold/browse_thread/threa
> > > > > > > >d/2a e130 edb1d0e2d2
> > > > > > > >
> > > > > > > >
> > > > > > > > Regards,
> > > > > > > > Kerry
> > > > > > > >
> > > > > > > > Me wrote:
> > > > > > > > > Bare with me here.
> > I'm a
> > > >
> > > > little slow.
> > > >
> > > > > > So I tried
> > > > > >
> > > > > > > > the code, and I get:
> > > > > > > > > You have a nil object
> > when you
> > > >
> > > > didn't expect
> > > >
> > > > > > it!
> > > > > >
> > > > > > > > > The error occurred
> > while
> > > >
> > > > evaluating
> > > >
> > > > > > nil.form_ui=
> > > > > >
> > > > > > > > > Is there enough smarts
> > built-in to
> > > >
> > > > populate
> > > >
> > > > > > the select
> > > > > >
> > > > > > > > boxes? Or do I
> > > > > > > >
> > > > > > > > > need something like:
> > > > > > > > >
> > > > > > > > > a=
> > Author.find(:all).collect {
> > > > |
> > > > |a|
> > > > |
> > > > > > a.name  }
> > > > > >
> > > > > > > > > If that kind of code is
> > required,
> > > >
> > > > do I put
> > > >
> > > > > > that in the
> > > > > >
> > > > > > > > helper form
> > > > > > > >
> > > > > > > > > override?  Any
> > chance I can
> > > >
> > > > see one
> > > >
> > > > > > complete
> > > > > >
> > > > > > > > example that works?
> > I've
> > > > > > > >
> > > > > > > > > been banging my head on
> > this for
> > > >
> > > > a
> > > >
> > > > > > while.  When I
> > > > > >
> > > > > > > > Google, I just come
> > > > > > > >
> > > > > > > > > across more people that
> > have been
> > > >
> > > > banging
> > > >
> > > > > > there heads
> > > > > >
> > > > > > > > on this.
> > > > > > > >
> > > > > > > > > Thanks! Paul
> > > > > > > > >
> > > > > > > > > On Aug 19, 1:58 pm,
> > Kerry Foley
> > > >
> > > > <[email protected]>
> > > >
> > > > > > > > wrote:
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >>
> http://groups.google.com/group/activescaffold/browse_thread/th
> > > > > > > > >>read /2a. ..
> > > > > > > > >>
> > > > > > > > >> Regards,
> > > > > > > > >> Kerry
> > > > > > > > >>
> > > > > > > > >> Me wrote:
> > > > > > > > >>
> >
> > > > > > > > >>
> > > > > > > > >>> Greetings!
> > First
> > > >
> > > > post.
> > > >
> > > > > > > >
> > >>>
> > > >
> > > >
> > > >
> > > > > > > > >>> I've been
> > greping the web
> > > >
> > > > for an AS
> > > >
> > > > > > example of
> > > > > >
> > > > > > > > populating a parent
> > > > > > > >
> > > > > > > > >>> select box, and
> > then
> > > >
> > > > dynamically
> > > >
> > > > > > changing a
> > > > > >
> > > > > > > > child select box through
> > > > > > > >
> > > > > > > > >>> an "onchange"
> > event.
> > > >
> > > > I've seen
> > > >
> > > > > > the
> > > > > >
> > > > > > > > observer approach, but not
> > with
> > > > > > > >
> > > > > > > > >>> AS.  Is
> > there support
> > > >
> > > > for such
> > > >
> > > > > > a thing?
> > > > > >
> > > > > > > >
> > >>>
> > > >
> > > >
> > > >
> > > > > > > > >>> I found this
> > thread where
> > > >
> > > > this same
> > > >
> > > > > > question
> > > > > >
> > > > > > > > was asked.
> > > > > > > >
> > > > > > > >
> > >>>
> > > >
> > > >
> > > >
> > > > > > > > >>>
> http://www.mail-archive.com/[email protected]/m
> > > > > > > > >>>sg00 108. ...
> > > > > > > > >>> The poor guy got
> > a rather
> > > >
> > > > prickly
> > > >
> > > > > > > > response.  He eventually
> > posted
> > > >
> > > > his
> > > >
> > > > > > > > >>> solution in the
> > last msg
> > > >
> > > > of the
> > > >
> > > > > > thread.
> > > > > >
> > > > > > > > Unfortunately, I can't get
> > > > > > > >
> > > > > > > > >>> that solution
> > to
> > > >
> > > > work.  The
> > > >
> > > > > > example [in
> > > > > >
> > > > > > > > plain English] was, "Surveys
> > > > > > > >
> > > > > > > > >>> have many
> > survey_questions
> > > >
> > > > and
> > > >
> > > > > > surveys
> > > > > >
> > > > > > > > have_many
> > survey_options."  If
> > > > > > > >
> > > > > > > > >>> options are
> > meant to be
> > > >
> > > > answers to
> > > >
> > > > > > questions,
> > > > > >
> > > > > > > > then it should be
> > > > > > > >
> > > > > > > > >>> "Surveys have
> > many
> > > >
> > > > questions.
> > > >
> > > > > > Questions
> > > > > >
> > > > > > > > have many options [multiple
> > > >
> > > > choice]."   That
> > > >
> > > > > > would be three
> > > > > >
> > > > > > > > levels.  I tried looking
> > at the
> > > > > > > >
> > > > > > > > >>> survey_options
> > table as
> > > >
> > > > some type of
> > > >
> > > > > > join with
> > > > > >
> > > > > > > > both foreign keys
> > > > > > > >
> > > > > > > > >>> [survey_id,
> > > > > >
> > > > > > survey_question_id].  If that
> > > > > >
> > > > > > > > were the case, then survey
> > > > > > > >
> > > > > > > > >>> "has many
> > questions
> > > >
> > > > through
> > > >
> > > > > > > > survey_options."  That
> > wasn't
> > > >
> > > > listed in
> > > >
> > > > > > > > >>> the example.
> > > >
> > > > Clearly, I'm
> > > >
> > > > > > confused
> > > > > >
> > > > > > > > somewhere.
> > > > > > > >
> > > > > > > >
> > >>>
> > > >
> > > >
> > > >
> > > > > > > > >>> I would
> > appreciate it if
> > > >
> > > > someone
> > > >
> > > > > > could explain
> > > > > >
> > > > > > > > the example referenced
> > > > > > > >
> > > > > > > > >>> in the last
> > message of the
> > > >
> > > > thread
> > > >
> > > > > > linked to
> > > > > >
> > > > > > > > above.  Alternatively.
> > I
> > > > > > > >
> > > > > > > > >>> would appreciate
> > a clear
> > > >
> > > > example of
> > > >
> > > > > > this
> > > > > >
> > > > > > > > pattern.  I think that
> > this
> > > > > > > >
> > > > > > > > >>> is a common
> > situation
> > > >
> > > > where some
> > > >
> > > > > > documentation
> > > > > >
> > > > > > > > would benefit many
> > > > > > > >
> > > > > > > > >>> people.
> > > > > > > >
> > >>>
> > > >
> > > >
> > > >
> > > > > > > > >>> Thanks! Paul
> > > > > > > >
> > >>>
> > > >
> > > >
> > > >
> > > > > > > > >
> > > > > >
> > > > > > --
> > > > > > Sergio Cambra .:: entreCables S.L. ::.
> > > > > > Mariana Pineda 23, 50.018 Zaragoza
> > > > > > T) 902 021 404 F) 976 52 98 07 E) [email protected]
> > > >
> > > > --
> > > > Sergio Cambra .:: entreCables S.L. ::.
> > > > Mariana Pineda 23, 50.018 Zaragoza
> > > > T) 902 021 404 F) 976 52 98 07 E) [email protected]
> > >
> > >
> > --
> > Sergio Cambra .:: entreCables S.L. ::.
> > Mariana Pineda 23, 50.018 Zaragoza
> > T) 902 021 404 F) 976 52 98 07 E) [email protected]
> >
> >
> > >
> >
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"ActiveScaffold : Ruby on Rails plugin" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/activescaffold?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to