2012-07-10 17 views
0

我正在創建一個跟蹤用戶就業情況和他們在公司中的應用程序。我需要一些幫助來嘗試路由應用程序,我製作了腳手架user,companydepartment我將如何路由此層次結構

  • user
    • company(用戶的has_many:通過=>外水)
      • department

user.rb

class User < ActiveRecord::Base 
    #associations 
    has_many :employments 
    has_many :companies, :through => :employments 
    has_one :department, :through => :employments 
end 

employment.rb

class Employment < ActiveRecord::Base 

    belongs_to :user 
    belongs_to :company 
    belongs_to :department 
    has_many :employment_histories 
end 

employment_history.rb

class EmploymentHistory < ActiveRecord::Base 

    belongs_to :employment 
end 

company.rb

class Company < ActiveRecord::Base 

    has_many :employments 
    has_many :users, :through => :employments 
    has_many :departments 
end 

department.rb

class Department < ActiveRecord::Base 
    belongs_to :company 
end 

回答

0

對於路由,最簡單的方法是將資源聲明爲資源,然後通過對象的id訪問它們。 http://guides.rubyonrails.org/routing.html#resource-routing-the-rails-default

然後通過協會找到的,我建議你看看這個railscast:http://railscasts.com/episodes/3-find-through-association?view=asciicast

如果路由,並通過協會發現並不是件容易事,你可能會想重構你的層次結構,以更有意義,隱喻。比如我的做法是:

  • 用戶的has_many:就業,並給它default_scope順序:「employments.created_at DESC」在用戶模式,以確保最新的就業第一。
  • 就業HAS_ONE:部門
  • 部belongs_to的:公司
  • 公司的has_many:部門

然後你就可以通過協會訪問所有的數據(見上面的鏈接)。您只需要路由資源,然後知道如何在正確的控制器中訪問它們。

+0

用你的方法,招聘/解聘會怎麼樣? – Jaba 2012-07-11 13:31:03

+0

那麼,你可以爲每個僱傭人員創造一個新的就業機會,並且沒有結束日期,然後開除將會給就業一個結束日期,從而表明它已經結束。 – AJcodez 2012-07-11 16:41:48