2
所以軌道內,使用活動記錄,我們可以繼承用戶單表繼承Ruby on Rails的
基類多種型號 - 用戶 子類 - 員工,經理,主管
所以在軌我們只使用一個表,儘管當你創建一個新的員工時,當你嘗試訪問Employee.salary時,儘管只有管理者和主管應該有權訪問這些屬性。你如何保護這些? Attr方法?
在此先感謝。
所以軌道內,使用活動記錄,我們可以繼承用戶單表繼承Ruby on Rails的
基類多種型號 - 用戶 子類 - 員工,經理,主管
所以在軌我們只使用一個表,儘管當你創建一個新的員工時,當你嘗試訪問Employee.salary時,儘管只有管理者和主管應該有權訪問這些屬性。你如何保護這些? Attr方法?
在此先感謝。
很久以前,我在一個項目中設置了STI。我現在忘記了細節,但是這裏有一些可能有幫助的代碼。這是來自Rails 2.3.4。不知道它會在Rails 3中看起來像什麼。 默認情況下,帶有任何名爲type的列的Rails用於單表繼承目的。如果您需要指定,請使用「set_inheritance_column」,如下所示。 我不記得能夠保護其他子類的一個子類的屬性。就像你提到的,它的全部存儲在同一張表中。我想我在那個時候嘗試過,但當時對Rails很陌生。我認爲它可以通過attr_accessable或子類上的東西來實現。我可能是錯誤的,但試試看。
class User < ActiveRecord::Base
set_inheritance_column :user_type
attr_protected :user_type
end
class BusinessOwner < User
has_many :businesses
end
class SiteUser < User
end
從架構:
create_table "users", :force => true do |t|
t.string "user_type"
t.string "username"
t.string "email"
t.integer "location_id"
...
end