0

我有一个 Rails 应用程序,它有一个 Employee 模型、一个 Skill 模型和一个 Department 模型。

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

但是,我也希望能够独立创建技能和部门。我只需要能够将部门和技能“联系”到员工。像这样的路线是有意义的(/employees/:id/skills, /employees/:id/department),但就像我说的,我希望能够做到

/departments
/skills
/skills/new

ETC..

我可以做

EmployeeList::Application.routes.draw do

  resources :departments
  resources :skills

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

这为我提供了我想要的路线,但在我的 routes.rb 文件中列出两次资源看起来真的很糟糕。我该怎么做?

4

1 回答 1

2

如果,正如你所写“我还希望能够独立创建技能和部门。我只需要能够‘连接’一个部门和一个员工的技能。” 那么这显然不是嵌套资源imho的情况。嵌套资源只能存在于其“周围”资源的“内部”。与 belongs_to 和 has_many 的简单 1:n 关系应该是您想要的,因此在 routes.rb 中:

EmployeeList::Application.routes.draw do
  resources :departments
  resources :skills
  resources :employees
end
于 2012-07-29T20:04:47.670 回答