Tag: devise原则

devise自定义路线和login页面

我试图让自定义路线在我的Rails应用程序(ruby1.9.2与Rails 3)工作。 这是我的config / routes.rb文件 match '/dashboard' => 'home#dashboard', :as => 'user_root' devise_for :user do get "/login", :to => "devise/sessions#new" # Add a custom sign in route for user sign in get "/logout", :to => "devise/sessions#destroy" # Add a custom sing out route for user sign out get "/register", :to => "devise/registrations#new" # Add a […]

用Devise创build一个`Users`显示页面

我试图创build一个用户show页面(这将作为一个configuration文件页面),但困惑于如何与Devise做到这一点。 似乎Devise没有任何types的show定义 – 有什么办法可以访问控制器Devise正在执行,以使一个或我必须重写它们?

在主UI线程上的.NET中引发事件

我正在开发.NET中的类库 ,其他开发人员将最终使用。 这个库使用一些工作线程, 这些线程触发状态事件,这将导致一些UI控件在WinForms / WPF应用程序中被更新 。 通常,对于每次更新,您都需要检查WinForms上的.InvokeRequired属性或相应的WPF属性,并在主UI线程上调用此属性进行更新。 这可以很快变老,而且让最终开发者这样做是不对的,所以… 有什么办法,我的图书馆可以触发/调用主UI线程的事件/委托? 尤其是… 我应该自动“检测”“主”线程使用? 如果不是,我应该要求最终开发者在应用程序启动时调用一些(伪) UseThisThreadForEvents()方法,以便我可以从该调用中获取目标线程?

是否应该在数据库级别和应用程序级别强制执行约束?

我一直在阅读Dan Chak的“Enterprise Rails”一书,这让我想:你觉得在数据库级别和应用程序级别都应该有数据限制吗? 或者你觉得像Ruby on Rails这样的自以为是的框架 – 数据库只是一个“愚蠢的数据库”,所有的检查都应该在你的应用程序中完成(我不想在这里单独列出RoR – 我是我自己的Rails的狂热粉丝,但我不同意它的数据库的方法)? 就我个人而言,我觉得你应该有他们两个,以确保你的数据库和应用程序安全。 我的意思是你应该使用非空约束,给你的字段一个长度,如果知道(而不是把它们全部留在nvarchar(255) ),在你的数据库上有诸如外键 , 检查约束和触发器 ,然后通过应用程序中的业务逻辑规则来执行此操作。 海事组织这使得你的应用程序通过其用户界面健壮,并且还可以防止有人可能直接访问数据库。 我经常看到的反驳论点是它需要多less重复的逻辑; 一次在数据库级别,一次在应用程序级别 – 假设您有一个检查约束来validation产品的SKU是否进入(即它的长度大于零)。 现在,您还需要在业务逻辑中包含validation方法,以确保用户input的值长度大于零,并且还可能需要某些客户端JavaScript来在用户input数据时捕获错误。 我不认为这是一件坏事 – 是的,你有一些重复的逻辑,但最终的结果是“数据库为堡垒”的思维方式,因为如果你考虑一下,你的数据是你的应用程序中最重要的部分; 毕竟,如果数据很容易被损坏和危害,那么你的shiny的新的Web 2.0应用程序有什么好处呢? 你对此有什么想法? 数据库应该是像诺克斯堡这样一个不可逾越的堡垒,还是一个由激光防护的开放保险箱? 换句话说,你应该牺牲一些重复的逻辑来确保一个安全的数据模型,或者把所有的东西都留给你的应用程序,并简单地使用数据库来存储数据?

小吃店解散后我怎样才能得到通知?

我正在使用com.android.support:design:22.2.0库中的Snackbar。 我正在使用它来撤销删除。 为了使我的生活更轻松,我将使界面看起来像是事实上从数据源中删除,如果小吃店中的撤销button没有按下,实际上是从数据源执行删除操作。 所以,我想知道什么时候Snackbar不再可见,所以删除这些项目是安全的。 我可以调用Snackbar上的getView(),但是我不确定我应该使用哪个监听器。 我尝试setOnSystemUiVisibilityChangeListener()但没有工作,我相信它只是为系统状态栏。 另外,Snackbar不能被扩展,因为它有一个私有的构造函数。

用于实施UNDO和REDO选项的数据结构

我想实施UNDO和REDO选项(就像我们在MS word中看到的那样)。 你能build议我一个数据结构吗,我该如何实现呢?

为什么是String.Format静态?

比较 String.Format("Hello {0}", "World"); 同 "Hello {0}".Format("World"); .Netdevise者为什么select一个实例方法的静态方法? 你怎么看?

良好的JavaScript代码在开源Web应用程序的例子

我正在努力寻找一种好的JavaScript代码编写方式,这种代码效率高,被其他开发人员广泛接受,而且不是很难看。 直到最近,我使用的仅仅是字面对象和jQuery的一些部分,但是在阅读道格拉斯·克罗克福德的“JavaScript:The Good Parts”之后,我现在完全意识到,除了AJAX,DOM修改和简单的animation之外,JavaScript还有更多的东西。 问题是,JavaScript似乎没有太多的标准化。 OOP /inheritance模式的数量压倒我。 我不习惯每个框架/库提供自己的inheritance障碍。 我也不想在这样的事情上做出错误的决定,因为这意味着在出现一些问题的时候会重写所有的代码。 所以我在寻找的是现有的开源Web应用程序,如果可能的话,在客户端使用JavaScript,以查看实际项目中使用的模式。 我想看看Web应用程序的代码,而不是框架或库。 我不介意,如果这些Web应用程序是基于一些框架(如果它是Dojo或RequireJS,它会更好,因为我正在使用它们;)

Devise中的Token Authenticatable模块

我开始在我的Rails应用程序中使用Devise,但Token Authenticatable : 基于身份validation令牌(也称为“单一访问令牌”)模块的用户在我身上困惑。 用户是否仅在当前会话中进行身份validation? 如果他现在使用包含令牌的URL,他可以在晚些时候重新使用它,并且仍然可以访问,还是只有一个访问权限? 多个用户可以同时使用相同的令牌进行身份validation吗? 我已经广泛search了一个工作的例子。 请原谅我,如果这是其他地方解释。 任何指针都会比欢迎。 谢谢你的帮助。

CQRS体系结构中的域validation

危险…史密斯博士危险…前面的哲学职位 这篇文章的目的是为了确定是否将validation逻辑放在我的域实体之外(实际上是聚合根)实际上给了我更多的灵活性,或者它是kamikaze代码 基本上我想知道是否有更好的方法来validation我的域实体。 这是我打算这样做,但我希望你的意见 我考虑的第一个方法是: class Customer : EntityBase<Customer> { public void ChangeEmail(string email) { if(string.IsNullOrWhitespace(email)) throw new DomainException(“…”); if(!email.IsEmail()) throw new DomainException(); if(email.Contains(“@mailinator.com”)) throw new DomainException(); } } 我实际上不喜欢这个validation,因为即使当我将validation逻辑封装在正确的实体中时,这违反了打开/closures原则(打开以进行扩展,但是closures以进行修改),并且我发现违反这个原则,代码维护变成当应用程序复杂化时,真正的痛苦。 为什么? 由于领域规则的变化比我们想要承认的要多,而且如果规则隐藏在这样一个实体中,他们很难testing,很难阅读,很难维护,但是为什么我不喜欢这个方法是:如果validation规则改变,我必须来编辑我的域实体。 这是一个非常简单的例子,但在RL中validation可能会更复杂 所以遵循Udi Dahan的哲学, 明确的angular色以及Eric Evans在蓝皮书中的build议,接下来的尝试是实现规范模式,像这样 class EmailDomainIsAllowedSpecification : IDomainSpecification<Customer> { private INotAllowedEmailDomainsResolver invalidEmailDomainsResolver; public bool IsSatisfiedBy(Customer customer) { return !this.invalidEmailDomainsResolver.GetInvalidEmailDomains().Contains(customer.Email); } } 但是后来我意识到,为了遵循这种方法,我必须首先对实体进行变异,以便传递被赋值的值 […]