2012-03-07 91 views
2

我寫on Rails應用程序的紅寶石,這將有2種不同的用戶類型(假設賣家和買家)。我使用devise gem來處理認證。Ruby on Rails的 - 2種用戶類型

我不想使用單表繼承有三個原因:
1)我不想在我的用戶表中有很多列(我必須爲賣家和買家都存儲字段一個表,他們將有很多不同的Fileds的)
2)我不想有很多空值的在我的數據庫
3)保持賣家和買家分開,將有助於提高性能速度

我決定爲賣家和買家創建2個獨立的模型(併爲他們每個人創建設計)。長話短說 - 它造成了一些麻煩(即處理與單一形式的登錄困難,使用簡單的東西,如「私人消息」,保持我的代碼DRY等多形性關聯),

因此,這裏是問題:
你是否認爲這將是創建一個模型(用戶)提供一些常見的領域很容易地處理與色器件身份驗證,然後有不同的模型(買方和賣方)與belongs_to的和HAS_ONE協會來存儲更多信息好主意。類似這樣的:

class User < ActiveRecord::Base 
    has_one :seller 
    has_one :buyer 
end 

class Seller < ActiveRecord::Base 
    belongs_to :user, :conditions => "user_type= 'seller'" 
end 

class Buyer < ActiveRecord::Base 
    belongs_to :user, :conditions => "user_type= 'buyer'" 
end 

這是一個很好的解決方案嗎?或者你認爲單表繼承會是一個更好的主意嗎?

什麼麻煩/困難,它可能會導致?
顯示每個用戶的個人資料頁面的路線是什麼?我想有這樣的事情website.com/sellers/idwebsite.com/buyers/id

如果你能想到我的問題更好的解決方案 - 請讓我知道。

+1

同一個用戶可能重複[Rails - 2種用戶類型的應用程序設計](http://stackoverflow.com/questions/9517406/rails-application-design-for-2-user-types)。 – 2012-03-08 23:15:11

回答

1

如果你創建了賣方和買方單獨的表它甚至會更好,使用像有Inheritance and polymorphic-associations in rails態關聯。

這些分隔條件兩件事情,你會在數據庫查詢速度獲得並保持自己的類賣方和買方的邏輯也是很好的做法。