2012-08-31 89 views
2

我一直在想這個問題一段時間了,雖然看起來很簡單,但我似乎無法讓它「正確」。 我基本上有兩類公司和員工。它的設立是爲了讓一個公司擁有多個員工,並且員工屬於一個公司。我也使用STI,所以我有公司<用戶和員工<用戶。所有這些都足夠了。現在,員工只能做兩件事:查看他們自己的配置文件並更新它。另一方面,公司可以創建員工。在應用程序中,這是創建員工的唯一方法。我的問題是,我想盡可能簡單地做到這一點,也考慮到我可能會在某個時候製作API。所以我的問題是什麼在這裏被認爲是好的做法?我應該讓員工成爲公司下的嵌套資源嗎?我應該在公司命名空間下創建員工資源嗎?我是否應該只在employees_controller中保留所有操作,然後使用權限來允許公司訪問它們?看來,我所嘗試的一切都會感覺「不對」。Rails,建模公司/員工關係

回答

0

從你的要求來看,似乎有兩種類型的用戶:普通用戶,不是員工和員工。 Rails有一個belongs_tohas_many模型之間的關係。因此,對於公司,你可以這樣做:

class Company < ActiveRecord::Base 
    has_many :users, :dependent => :destroy 


class User < ActiveRecord::Base 
    attr_accessible :is_employee 
    belongs_to : company 

User模型中,有一列名is_employee存儲布爾值。這樣,您可以同時擁有員工和非員工。在Company中,如果Company被銷燬,其Users將消失。那些關係

更多的文檔可以在這裏找到: http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html

+0

感謝。我做這些工作並沒有什麼問題。正如我現在設置它,它運作良好。我的問題更多的是一個普遍的Rails問題。我應該怎樣做來重新闡述我原來的問題?我是新來的。 – Kasper

+0

嗯,回到你的問題,我不確定你說的是什麼意思只有公司可以創建員工? – qusr

+0

我的問題是,我想盡可能簡單地做到這一點,並儘可能使用「Rails'ish」。所以,這基本上是關於最佳做法。所以,由於沒有公司的員工沒有意義,我會讓員工成爲嵌套資源。現在這給了我漫長而笨拙的網址。所以,我分手了。現在我與員工合作的行爲分散在多個控制器上。此外,員工has_many邀請,但這些是隱含創建的,因此很難被視爲一種資源。事情是,即時通訊試圖獲得「軌道方式」。也許我應該讓它工作,但... – Kasper