我的rails應用程序中有一個用戶模型。它只有一個名稱屬性以及通過Devise登錄的電子郵件&。我想爲用戶創建一個模型配置文件。我應該如何創建它。通過將配置文件屬性添加到現有的用戶模型或創建模型配置文件並向其添加belongs_to關聯。在rails中爲用戶模型創建配置文件
回答
那麼,這取決於你的要求。
如果用戶只能有一個profile
,並且您只是要添加一些與user
相關的屬性,則沒有理由爲其創建新的類。
但是,即使用戶只能擁有一個配置文件,也可能需要執行一些normalisations。如果是這樣,您可以從users
表中刪除一些屬性以創建表profiles
,並且您將擁有一對一的關係。
class User < ActiveRecord::Base
has_one :profile
end
class Profile < ActiveRecord::Base
belongs_to :user
end
那麼......根據您的要求,您可能會遇到用戶可能擁有多個配置文件的情況。如果是這樣的話:
class User < ActiveRecord::Base
has_many :profiles
end
class Profile < ActiveRecord::Base
belongs_to :user
end
總之,沒有對錯之分......它取決於您的要求,以及您的設計決定。
是否可以創建一個配置文件模塊並將其包含到用戶模型中,因爲我想爲不同類型的用戶創建配置文件,例如學生,老師,校長,哪些會有一些共同的屬性和一些彼此不同? – Metal 2012-07-22 19:12:27
不是真的......你可以在其他情況下使用模塊和繼承。例如,如果你有以下類:'學生','老師','工作人員'等,他們都有comum中的東西,比如'name','age'等等,並且與其他表的關係是不同。在這種情況下,您可以使用模塊或繼承來避免在每個類中添加所有comum屬性。然而,在你的情況下,我不認爲你需要它..你可以添加一個屬性'type'來指定訪問級別(我認爲它是你想要的)。所以,如果current_user有類型的學生,你可以阻止一些動作... – gabrielhilal 2012-07-22 19:42:21
但是,如果'student','teacher'和'principal'具有不同的行爲,那麼......你應該考慮不同的類...... – gabrielhilal 2012-07-22 19:44:27
向您的用戶模型添加更多屬性會讓您的用戶對象有點沉重,因爲您經常會調用該對象,因此這不是最好的想法。例如,要驗證用戶,您不需要加載配置文件屬性,如current_user helper所在的位置或出生日期。因此,最好是在一個單獨的模型中提取配置文件屬性,並採用gabreilhilal的方法。
- 1. 在Rails中關聯兩個模型(用戶和配置文件)
- 2. Rails - 爲用戶創建通知模型
- 3. 在用戶模型的post_save信號上創建用戶配置文件
- 4. Django - 在創建用戶時創建用戶配置文件
- 5. 使用rails創建用戶配置文件和組
- 6. Rails - 1用戶模型,但2個配置文件類型模型?
- 7. Django:爲相關模型使用用戶模型或配置文件模型
- 8. Django 1.5。用戶配置文件創建
- 9. 用戶配置文件創建
- 10. 在Rails模型中創建模型
- 11. 只能創建一個用戶配置文件 - Rails 4.2.4
- 12. Rails Active Record - 如何建模用戶/配置文件場景
- 13. Rails - 爲模型創建UID
- 14. 如何在創建新用戶時創建用戶配置文件
- 15. NoMethodError Rails中創建模型
- 16. 如何在Sitecore中創建用戶配置文件編程式
- 17. 在Django 1.2中創建用戶配置文件表單
- 18. 如何在GAE中獲取或創建用戶配置文件?
- 19. 在phpmyadmin中編輯配置文件以創建新用戶
- 20. 如何爲設計用戶創建配置文件?
- 21. 爲用戶配置文件創建mysql數據庫
- 22. 爲用戶創建獨特的配置文件頁面
- 23. Rails回調 - 爲用戶模型創建on_login回調?
- 24. Devise in Rails沒有創建創建配置文件的路線
- 25. Rails:在模型中創建子文件夾?
- 26. 加載用戶配置文件後創建進程用戶
- 27. 使用核心數據創建用戶配置文件/帳戶
- 28. Rails 4:用戶配置文件
- 29. Rails,Mongoid,Devise用戶配置文件
- 30. 在Maven中創建配置文件
就個人而言,如果配置文件數據相對穩定,我會創建一個配置文件模型並向它添加belongs_to,或者可能爲用戶添加has_one。 – thisfeller 2012-07-22 18:44:11