2011-11-11 23 views
0

我正在爲我的用戶模型使用STI。我有一個用戶類,以及賣家和客戶的子類。用戶不可兼得,所以我認爲STI對於這種情況是可以的。 我有兩個問題:關於STI實施的兩個簡單問題

  1. 如何限制用戶實例的創建,所以只有銷售者或者客戶可以創造出來的?我想我可以驗證Type的存在,但是這對我來說並不合適。

  2. 我可以爲STI的賣家和客戶提供額外的不同領域嗎?怎麼樣?

回答

1

只能讓用戶和客戶的儲蓄做:

validates_inclusion_of :type, :in => [:customer, :user] 

至於你的第二個問題,答案是:添加列。如果您爲客戶添加列,用戶模型將忽略它們,所以沒什麼大不了的。這取決於您的使用情況,但在某些情況下,最好避免使用STI。

+0

你會嘗試'add_column:child_name,:field_name,:type_name'?這似乎並不適用於我。 – Rishi