我有一個模型,幾乎每個字段都需要爲每個項目設置一個公共/私有標誌(布爾值)。起初我以爲我會爲每個領域做一個布爾值,但是,我不確定這是否是處理這個問題的最佳方式。有沒有更好的辦法?我爲所有的建議。模型中有很多字段,但想擁有所有這些字段的公有/私有屬性
1
A
回答
0
我想這取決於幾件事情,其中包括誰會改變它以及需要多長時間改變一次。如果這僅僅是配置中很少會發生變化,如果有的話 - 那麼我把它放在一個配置文件或初始化某種:
PUBLIC_FIELDS = %w(field_one, field_two, field_three)
PRIVATE_FIELDS = %w(field_four, field_five, field_six)
如果這是將是動態的東西,靜態的應用程序與用戶能夠定期修改信息,我會選擇一個單獨的模型,稱爲field_visibility
,以下字段field_name
,visibility
。我將在最初加載字段作爲種子數據,然後給用戶一個UI進行修改。我會給模型兩個有名望的作用域:
named_scope :public_fields, :conditions => {:visiblity => 'public'}
named_scope :private_fields, :conditions => {:visiblity => 'private'}
你當然可以使用位字段來代替字符串。如果要擴展到其他模型,還可以向模型添加表名稱。
然後在這個屬於的模型中,你可以做一些事情來回引用。包括命名示波器:
named_scope :public_fields, :select => FieldVisiblity.public_fields
個別功能,元編程...這也適用於可能的改進。
我希望這有助於!
0
我會更好encapsulate您的類通過使所有變量爲私人並提供每個變量的方法。這也使得稍後添加變量變得更容易。
0
你也可以使用一個flagmap(參見dm-types它是如何工作的)和一個定義flagmap中列位置的類中的數組。然後覆蓋屬性讀取器以返回零,除非@visible
設置爲true,如果該字段通過標誌映射標記爲私有。快樂的移位;-)
相關問題
- 1. PostSharp - 將屬性應用於所有私有字段
- 2. 隱藏所有字段/字段集中的所有字段
- 3. 有沒有辦法在Django模型中擁有類似字典的字段?
- 4. MongoDB私有字段
- 5. FluentNHibernate中的私有字段
- 6. 爲什麼在C#中使用公有屬性來表示私有字段?
- 7. 通過具有反射C的屬性獲取私有字段#
- 8. 所有模型屬性的隱藏字段
- 9. 如何拼湊一些PDF表單字段,但不是所有這些字段
- 10. 更新具有私有字段的Rust結構的公共字段
- 11. Loopback.js私有模型屬性
- 12. Django模型字段有多種類型?
- 13. magento模型不保存所有字段
- 14. 爲字段的所有子字段設置「索引」屬性
- 15. 爲什麼有些字段沒有保存在OneToOneField模型中?
- 16. NoSuchFieldError但字段有
- 17. 將模型字段插入Django中現有的模型字段
- 18. Jquery - 驗證所有字段有效的多個字段(分組字段)
- 19. Clojure defrecord和私有字段
- 20. 設置私有字段
- 21. 訪問私有字段
- 22. 訪問私有字段
- 23. 爲什麼不公開所有字段/屬性/方法?
- 24. 有很多字段的枚舉設計
- 25. JS/ECMAScript6私有字段與模式?
- 26. Mockito:模擬私有字段初始化
- 27. ActiveAdmin不會保存有很多並屬於很多字段
- 28. 過濾只有一個屬性或所有字段
- 29. 字節碼 - 公有和私有屬性差異
- 30. 私有字段vs構造函數中的屬性
傑夫,非常感謝你。我將進一步閱讀這篇文章,但是它的內容將是動態的。這意味着用戶將能夠完全控制他們的「隱私」設置。我想我會選擇採用上面解釋的field_visibility路線。 – John 2010-08-12 19:25:51