小编Chr*_*ton的帖子

何时创建一个类vs设置一个布尔标志?

我有一个有趣的问题要提出来; 应该何时创建模型类/对象而不是为存储在数据库中的数据设置布尔标志?

例如,假设我有一个Person类,它具有President,Guard和PartTime的布尔标志.根据标志的值,对此类/模型的处理方式不同.因此,总统从Guard和PartTime(r)获得系统中的不同权限.

什么时候使用单表继承来表示这个信息,什么时候会继续使用布尔标志?

我的直觉是使用STI将它们转换为不同的对象,因为这对我来说似乎更为OO.检查布尔值在某种程度上似乎是错误的,但我也可以看到它的位置.

更新澄清

让我使用另一个例子,因为上面的例子涉及太多案件.

我正在使用包含Pages的CMS应用程序,页面可以是公共页面,私有页面,共享页面,隐藏页面或默认页面(这意味着它是您在URL中未指定页面时获得的内容).现在,我们有一个Page模型,一切都是一个布尔标志 - Public,Default,Shared.

我不相信这是处理这个问题的最佳方法.特别是因为我们有规则来管理哪个页面可以是什么,即默认页面或共享页面必须是公共页面,而私有页面只是私有.

我同意下面的评论,Roles for the Person示例非常有意义.我不确定它的Page例子是什么.

而要使事情变得更复杂,只能有一个默认页面和一个共享页面.STI可能允许我验证这一点,但我不确定,因为表中可能有许多默认和共享页面(只是没有与特定站点相关联).

注意:问题的上下文是Ruby on Rails应用程序,但适用于任何面向对象的语言.

oop ruby-on-rails object

7
推荐指数
2
解决办法
909
查看次数

在HtmlHelper扩展方法中访问HtmlHelper方法 - ASP.NET MVC RC2

我试图在ASP.NET MVC RC2中构建一个HtmlHelper扩展.这段代码在预览版5中运行良好,但在RC2中不再有用,我试图理解为什么.这是代码:

public static string EmptyDropDownList(this HtmlHelper htmlHelper, string name, object htmlAttributes)
{
    return htmlHelper.DropDownList(name, new SelectList(new string[0]), htmlAttributes);
}
Run Code Online (Sandbox Code Playgroud)

问题是我无法从扩展方法中访问htmlHelper上的所有方法.因此,找不到htmlHelper.DropDownList.

有什么建议?

asp.net-mvc extension-methods html-helper

4
推荐指数
1
解决办法
3871
查看次数