2013-06-06 6 views
0

Я googled и искал форумы, но не могу найти ответ, который соответствует моему сценарию.Полиморфная ассоциация в Rails 3

Допустим, есть следующие модели:

class TextProblem < ActiveRecord::Base 
    belongs_to :askable, :polymorphic => true 
    ... 
end 

class MultipleChoice < ActiveRecord::Base 
    belongs_to :askable, :polymorphic => true 
    ... 
end 

class WordMatch < ActiveRecord::Base 
    belongs_to :askable, :polymorphic => true 
    ... 
end 

Теперь у меня есть еще одна модель под названием вопрос. Он имеет поле с именем question_type_id, который указывает, какой тип вопроса это и поле имени question_id, что является внешним ключом к одной из askables .. я хочу сделать что-то вроде этого:

class Question < ActiveRecord::Base 
    has_one :askable, :foreign_key => 'question_id' .... 
end 

и дать ему правильный вопрос, но я не уверен, как написать ассоциацию. Я смотрю на это правильно или должен ли я пытаться достичь этого по-другому?

Любая помощь приветствуется!

ответ

0

Вы должны иметь вашу ассоциацию наоборот

class Question < ActiveRecord::Base 
    belongs_to :askable, :polymorphic => true 
end 

class TextProblem < ActiveRecord::Base 
    has_many :questions, :as => :askable 
    ... 
end 

class MultipleChoice < ActiveRecord::Base 
    has_many :questions, :as => :askable 
    ... 
end 

class WordMatch < ActiveRecord::Base 
has_many :questions, :as => :askable 
    ... 
end 

Обратитесь к this.

+0

Спасибо Vishma, сейчас он работает. Мне пришлось изменить базовую схему в таблице вопросов, чтобы использовать правильные соглашения (_id & _type). Когда это происходит, и ассоциации меняются, я получаю ожидаемые результаты. – Kevin