2011-10-06 79 views
1

我在Stack上看到了一些線程,但希望稍微澄清一點。Rails模型結構

我見過很多應用程序,其中有產品模型和類別類別模型。這是一個並且屬於多個協會,或者是通過協會的has_many。

我也見過很多應用程序,其中有用戶模型和email_address模型。 Email_address屬於用戶,但用戶可以有許多電子郵件地址。

我的問題是,是否會有這種情況,您可以分別將所有電子郵件地址或類別包含到用戶和產品模型中?那麼在你的用戶模型中,你將擁有email_one,email_two等?

將其分爲不同型號有哪些優缺點?謝謝。

回答

1

如果該屬性很簡單,最好將它保存在一個模型中 - 您甚至可以序列化該屬性,以便使用它,例如以及email_addresses數組。但(大但是)你可能想要添加更多的信息到一個電子郵件地址 - 哪一個是主要的,什麼時候是最後一個配置文件,電子郵件最後發送到..等等這當然是更容易處理如果你有一個單獨的電子郵件地址模型。所以也許問題是'我應該在什麼時候使用序列化屬性?'。我自己的答案是'只有當我確定我在該領域存儲了一些我永遠不想添加更多屬性的東西時'。通常這意味着它對於主應用來說是相當周邊的東西,並且關於哪個沒有人關心太多......

+0

並且記住,如果你將一個數組將電子郵件地址合併到單個字段中,然後基於單個電子郵件地址可靠地找到用戶變得更難 – Gareth

+0

Thanks @Gareth。將事情分解到自己的模型中以提供最大的靈活性是有道理的。 – noob

+0

@chrispanda,是否有可能在用戶模型中有兩個或多個字段,例如電子郵件地址?與其將其存儲在一個字段或單獨的電子郵件模型中,您可以在用戶模型中使用primary_email,secondary_email,tertiary_email等屬性?例如,我擔心在單獨的模型中使用電子郵件和密碼驗證用戶是很困難的。謝謝。 – noob