2013-09-04 2 views
0

У меня есть класс Planning в моем приложении. Этот класс может принадлежать трем различным классам (System, Subsystem OR Subsubsystem) в зависимости от пользователей. Чтобы быть более понятным: пользователь должен иметь возможность создать Planning из любого из трех классов.Несколько родительский класс ребенка (рельсы)

У меня нет проблем с моделями, но в моем plannings_controller#new я не знаю, что делать.

Это то, что метод new будет выглядеть, если мать-класс был система:

@system = System.find(params[:system_id]) 
@planning = @system.plannings.build 

respond_to do |format| 
    format.html # new.html.erb 
    format.json { render json: @planning } 
end 

конца

Может кто-нибудь сказать мне способ управления контроллером планировок поэтому было бы знать, какое класс - это материнский класс?

спасибо большое!

+0

Вы используете STI так 'system',' 'Subsystem' и Subsubsystem' карту в той же таблице БД? В этом случае у вас должна быть родительская модель «GenericSystem» и нет необходимости указывать точную модель, потому что системы будут полиморфными для '# plannings'. – akhanubis

+0

искали сейчас STI, и это, кажется, отличное решение, спасибо! – ianobraczka

ответ

0

Если по

мульти родительского класса ребенка

вы имеете в виду множественное наследование, вы знаете, что нет такой вещи в Ruby.

+0

Я не имею в виду наследование, я имею в виду отношения. класс матери! = суперкласс – ianobraczka

0

http://guides.rubyonrails.org/association_basics.html (полиморфный)

 
class Planning < ActiveRecord::Base 
    belongs_to :plannable, :polymorphic => true 
end

class System < ActiveRecord::Base has_one :planning, :as => 'plannable' end

class Subsystem < ActiveRecord::Base has_one :planning, :as => 'plannable' end

+0

приятно! но как я могу использовать этот материал в своем новом методе plannings_controller #? разве было бы неплохо использовать ИППП? спасибо – ianobraczka

+0

вы также можете использовать sti, если вы предпочитаете .. если системные классы все simillar –

Смежные вопросы