1

我給自己一個小項目來幫助我改進Ruby on Rails編程。到目前爲止,我已經完成了完整的用戶註冊和身份驗證,包括密碼重置,記住我的功能和通知電子郵件。我完全理解正在發生的事情。如何在Ruby on Rails中高效地處理多個數據庫表

所以,我現在已經轉移到用戶帳戶區域,並希望編碼我的用戶將編輯他們的個人資料的頁面。我的註冊表單隻需要用戶名,電子郵件和密碼,因爲我想快速註冊。對於頁面,用戶可以編輯自己的個人資料信息,它會問他們的東西,如:

名字 姓出生 位置 的 日起,將對他們的個人資料 鏈接關於我 個人統計 favoyrite東西 狀態等 和他們的照片

他們應該能夠更新或更改此信息。在他們的實際個人資料頁面上,它會將這些信息提供給他們的個人資料。

我想知道保持組織狀態,最好爲此創建一個單獨的表。個人資料?或者將這些信息存儲在數據庫的用戶表中是明智的,例如名字的姓氏?

我試圖找出一個乾淨的方式來做到這一點,因爲後來我將需要添加更多的頁面,如設置頁面等

這是第一次,我會與多個合作表和我有一個想法如何做到這一點,但不太確定。任何建議,如簡要說明你將如何實現這一點,將不勝感激。

Regards

+1

這一切都取決於您的域名和查詢要求。學習數據庫設計http://www.db-class.org – clyfe 2012-01-03 21:35:25

回答

1

我知道我會因爲過分簡化主觀情況而從人身上得到傷害。但有時圍繞情況進行公開討論可能會有助於做出決策。所以,這是我的要求。

您是否使用設計或一些這樣的寶石鑑定件?如果是,那麼你可能會根據該寶石的要求創建表格。如果您考慮關注點的分離,那麼認證+授權系統所需的任何東西都包含在您現有的用戶表中。我會問這個問題 - 將這個表格與您的配置文件數據(特別是如果它不止一個文本字段)耦合起來有什麼好處嗎?我沒有看到其中一個,因爲配置文件或用戶生成的永久數據不再保證只是一個圖片和2-3個文本字段。例如,在社交網站上,個人資料可能需要自己的生活。

此外,如果您的網站起飛會發生什麼。如果您擁有一個活動的用戶羣,可將照片,位置信息和其他數據添加到配置文件中,那麼您是否希望開始影響您的驗證表?如果您遇到資源緊縮,獨立認證系統可能是您最後的擔憂。但是,如果它與用戶相關的所有內容相結合,情況並非如此。

所以,是的,它不依賴於你的特殊情況,但我希望我的上述想法提供給您爲什麼決定可能會因該網站的類型比較清楚。如果用戶處於系統核心並且用戶交互對配置文件(例如社交網絡)至關重要,那麼肯定會考慮將這兩個區域分開。如果用戶配置文件可能只是關於用戶的一行,那麼它不是一個大問題。如果您純粹是爲了學習而這樣做,那就試試兩種方式,因爲您將有更多的武器來應對未來的挑戰。

+0

嗨,我從頭開始編碼用戶認證,沒有使用設計。直到我讀了丹尼斯的帖子之前,我正在考慮製作一張單獨的桌子。 – LondonGuy 2012-01-04 07:56:57

+0

重讀你的消息,但還想說,儘管丹尼斯的職位是有道理的,我想前進,我想保持數據從認證數據分開是因爲配置文件數據可以增長輪廓的主要原因。它不會只有名字,姓氏,關於我等,它也會有用戶評分,來自其他用戶,朋友和其他事情的評論。我甚至可能還需要分離一些數據。 – LondonGuy 2012-01-04 08:03:23

+0

是的,還有其他的事情要考慮。您可能需要查看與您的應用程序類似的正在使用的技術。如果你決定去與NoSQL的說存儲(基於文檔DB或類似卡桑德拉),你的數據模型的設計將是那將是什麼樣的RDBMS完全不同。 – Tabrez 2012-01-04 14:46:45

1

我沒有看到需要爲用戶的配置文件建立單獨的表。我現在這麼說是因爲用戶和個人資料之間的關係是一對一的關係。用戶只有一個配置文件。除非用戶將擁有多個配置文件,否則我認爲您不需要爲用戶配置文件提供單獨的表格。 YOu可以簡單地向用戶表添加額外的列來存儲用戶的(可選)屬性。

在您的表單上,當用戶尚未設置註冊期間所需的屬性時,您可以將它們留爲空白。對於誰已經設置這些可選屬性的用戶,可以通過設置輸入標籤

<input value='dennis' name='user[first_name]'/> 

按鈕將永遠做一個更新並保存用戶屬性的值屬性展示他們的編輯形式。

+0

這對我很有意義。這意味着我可以在我的用戶控制器中添加編輯和更新方法。 – LondonGuy 2012-01-04 07:57:58