2016-01-01 27 views
0

我對Rails很陌生,正在開發一個項目,我想使用設計創建一個父/子關係。我仔細研究了Devise的一些文獻,但沒有看到我想要完成的任何明確的方法(雖然我當然可能忽略了答案,因爲我使用了不同的術語)。設計中的父/子類

這是我想做什麼:

公司註冊使用了一些額外的信息的正常色器件註冊流程 - 即公司名稱,地址等,他們再添加「用戶」一旦進入應用程序。用戶不應該有外部註冊流程。我希望每個用戶都能從Company繼承公司信息。

這是我想我會嘗試:

  1. 同時生成CompanyUser色器件模型。
  2. 生成User控制器,修改new行動@current_company.user.build

這會完成我想要做什麼?

任何進一步閱讀,你可能會傳遞,將不勝感激!

+0

我建議你嘗試自己可能的解決方案,並在這裏發佈,如果它不工作。 – Kkulikovskis

回答

0

做到這一點....

#app/models/company.rb 
class Company < ActiveRecord::Base 
    has_many :users 
end 

#app/models/user.rb 
class User < ActiveRecord::Base 
    devise .... 
    belongs_to :company 
end 

這是一個has_and_belongs_to_many關聯。


你應該做的是將companies作爲自己的模型;根本不包括Devise。

相反,您應該使User模型成爲唯一一個具有身份驗證的模型。之後,每個user必須與特定的company相關聯(或者如果您想使用has_many :through,則可以讓用戶成爲許多公司的成員)。

你必須圍繞一家公司確定Devise認證範圍(IE company.users.exists? user);我一直在努力,但還沒有徹底的實施。

有一個很好的參考這裏:Scope login to subdomain

這將讓你有users特定company;您可以使用subdomains(製作原始"multi tenant"應用)或在登錄或登錄時使用select框。


顯然,您缺乏輸入意味着我必須寫一個廣泛的答案。

如果我是你,我會考慮你想要的flow

研究multi tenancy與Rails(如果您使用PGSQL,apartment gem是很好的) - 這應該讓您更好地瞭解應用程序應該如何工作(IE如何支持用戶)。