Как назвать «владельца» этой полиморфной модели в Rails3 - PullRequest
1 голос
/ 22 января 2011
class Chair < ActiveRecord::Base
  has_many :buildings, :as => :faculty
end

class Department < ActiveRecord::Base
  has_many :buildings, :as => :faculty
end

class Building < ActiveRecord::Base
  belongs_to :faculty, :polymorphic => true
end

В файле маршрутов у меня есть:

resources :departments do
  resources :buildings do
end

resources :chairs do
  resources :buildings do
end

Как правильно построить новое здание в одном контроллере для отдела и кафедры.Я знаю, что могу создать еще одну полезную функцию, которая будет проверять, кто создает Building:

class BuildingsController < ApplicationController
  def new
    @parent = faculty
    @building = @parent.buildings.build
  end
end

в application_controller:

def faculty
  if params[:department_id]
    Department.find(params[:department_id])
  elsif params[:chair_id]
    Chair.find(params[:chair_id])
  end
end

но я спрашиваю, есть ли другиеRail как это сделать?Возможно, в Rails3 существует какой-то метод, который я могу использовать для получения информации: кто хочет создать здание, без реализации другой функции факультета.

1 Ответ

0 голосов
/ 27 января 2011

Там вы также должны сделать дополнительную функцию, но вам не нужно делать список ifs over params: http://railscasts.com/episodes/154-polymorphic-association

...