On Aug 10, 2:29 pm, Gaudi Mi <[email protected]> wrote:
> Having problems with STI.  Names below have been changed to protect the
> innocent.  Imagine a system that allows someone to apply for one of two
> different types of school scholarships.  Each scholarship goes through a
> different review process, represented by a state machine (this is not a
> state machine question).  So there are two state machine classes that
> differ slightly and subclass a generic StateMachine:
>
> class ScholarshipApplication
>   belongs_to :state_machine
> end
>
> class StateMachine
> end
>
> class StateA < StateMachine
>   has_one :application
> end
>
> class StateB < StateMachine
>   has_one :application
> end
>
> The problem is I can get a ScholarshipApplication instance to tell me
> its StateMachine, but the StateMachine can't tell me it's
> ScholarshipApplication.  E.g.:
>
> app = ScholarshipApplication.create
> state = StateA.create
> app.state_machine = state
> app.save
> app.state_machine  # returns what it should
> sm = app.state_machine
> sm.scholarship_application # throws error: "Unknown column
> scholarship_applications.state_a_id..."
>

Passing the :foreign_key option to the has_ones will definitely work.
You might also try hoisting the has_one into StateMachine (if that
makes sense for your models), as it's guessing the foreign key named
based on the class where it's declared (*probably* - I've not poked
the source to check this).

--Matt Jones

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

Reply via email to