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..."

So obviously I understand why this fails, since I don't have a
state_a_id column in scholarship_applications.  I just don't understand
whether what I'm doing is achievable and if so, what magic configuration
makes it all work.  E.g. should my has_one statements be in the
superclass?  Should I reverse the has_one and belongs_to?  Something
else?

Thanks!
-- 
Posted via http://www.ruby-forum.com/.

-- 
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