0

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

ただし、スキルと部門を独立して作成できるようにしたいと考えています。部門とスキルを従業員に「接続」できればよいだけです。このようなルート (/employees/:id/skills、/employees/:id/department) は理にかなっていますが、私が言ったように、できるようにしたいと思います

/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 回リストするのは非常に悪い習慣のようです。どうすればいいですか?

4

1 に答える 1

2

あなたが書いたように、「私もスキルと部門を独立して作成できるようにしたいです。部門とスキルを従業員に「接続」できればよいだけです。」これは明らかに、ネストされたリソースの場合ではありません。ネストされたリソースは、「周囲の」リソースの「内」にのみ存在できます。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 に答える