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.

