2012-07-29 156 views
0

我有一個Rails應用程序,它有一個Employee模型,一個Skill模型和一個Department模型。使用Rails自己的嵌套資源

class Employee < ActiveRecord::Base 
    belongs_to :department 
    has_and_belongs_to_many :skills 
    attr_accessible :email, :firstname, :name, :twitter 
end 

class Skill < ActiveRecord::Base 
    has_and_belongs_to_many :employees 
    attr_accessible :name 
end 

class Department < ActiveRecord::Base 
    attr_accessible :name 
end 

我正在爲此寫下路線,但這是我遇到麻煩的地方。

我覺得很有道理做

resources :employees do 
    resource :department 
    resources :skills 
end 

不過,我也希望能夠獨立創造技能和部門。我只需要能夠將一個部門和一項技能「掛鉤」給一名員工。該路線,這樣,道理(/員工/:ID /技能/員工/:ID /部),但就像我說的,我希望能夠做到

/departments 
/skills 
/skills/new 

等。

我能做

EmployeeList::Application.routes.draw do 

    resources :departments 
    resources :skills 

    resources :employees do 
    resource :department 
    resources :skills 
    end 
end 

,這爲我提供了我想要的路線,但它看起來就像在我的routes.rb文件列出了兩次的資源非常糟糕的做法。我應該怎麼做?

回答

2

如果您寫下了「我也希望能夠獨立創建技能和部門,我只需要能夠將一個部門和一項技能連接到一個員工。」那麼這顯然不適用於嵌套資源imho。嵌套資源只能在其「周圍」資源內「存在」。與belongs_to和has_many的簡單1:n關係應該是你想要的,因此在routes.rb中:

EmployeeList::Application.routes.draw do 
    resources :departments 
    resources :skills 
    resources :employees 
end