小编jon*_*nii的帖子

验证habtm关联的长度而不保存

我有一个与组有HABTM关系的用户模型.我不希望用户能够在5个以上的组中,所以想要验证HABTM关系的长度.

在编辑用户页面上,我有一个复选框列表,用户可以在其中选择他们想要的组(我正在使用formtastic作为表单).

在我的用户控制器中我打电话:

@user.update_attributes(params[:user])
Run Code Online (Sandbox Code Playgroud)

这导致rails自动更新关联.

在我的用户模型中,我有以下内容:

def validate
    if self.groups.length > 5
        self.errors.add(:groups, "cannot have more than 5 groups")
    end
end
Run Code Online (Sandbox Code Playgroud)

这导致表单验证失败,但update_attributes调用已更新数据库以反映对关联组的更改.这样,每次用户单击"保存"按钮时,即使记录无效,也会保存其组关联.

解决这个问题的最佳方法是什么?

我想也许验证需要在组模型而不是用户模型上,这会起作用吗?理想情况下,我想更新关联的组而不保存记录,进行验证,然后保存记录.

validation activerecord ruby-on-rails has-and-belongs-to-many

5
推荐指数
1
解决办法
3125
查看次数

WebApi中严格的枚举查询字符串解析

我有这样的控制器动作:

public Foo Get([FromUri] Filter[] filters){...}

像这样的Enum:

public enum Filter
{
   Yes,
   No,
   FileNotFound
}
Run Code Online (Sandbox Code Playgroud)

当我使用以下请求调用我的控制器时:

/api/things?filters=garbagevalue

然后传递给控制器​​的值是Filter.Yes(默认值).是否有可能让webapi拒绝,可能是BadRequest或其他响应代码和/或异常,对具有enum参数的控制器的任何请求,其中enum参数值未知?或者,是否可以从查询字符串参数中过滤掉与枚举值不匹配的值?

我知道None在枚举中有一个值并检测到它可能会更好,但我想避免将其添加到我的所有枚举中.此外,None这将是一个有效值,必须检测,我将无法向发出请求的人提供任何反馈,查询参数无效.

谢谢!

c# asp.net-web-api

5
推荐指数
1
解决办法
3133
查看次数

在Owin应用程序中安装Suave

我有一个用C#编写的现有owin应用程序,并希望将一个suave应用程序作为中间件安装,但由于我对F#相对较新,我发现很难理解应该如何完成.我想我正在寻找类似的东西:

// in F# land
module MySuaveApp.ApiModule

let app =
  choose
    [ GET >=> choose
        [ path "/hello" >=> OK "Hello GET"
          path "/goodbye" >=> OK "Good bye GET" ]
      POST >=> choose
        [ path "/hello" >=> OK "Hello POST"
          path "/goodbye" >=> OK "Good bye POST" ] ]

  let getSuaveAsMiddleware() =
    ... magic goes here ...

// in Startup.cs
app.Use(MySuaveApp.ApiModule.getSuaveAsMiddleware())
Run Code Online (Sandbox Code Playgroud)

至于那个魔法应该是什么,我认为它是OwinApp.ofAppFunc或者的组合OwinApp.ofMidFunc,但我不能为我的生活弄清楚应该是什么.

f# owin suave

5
推荐指数
1
解决办法
375
查看次数

确定主键号码的标准方法是什么?

我打算用php和mySQL制作一个非常简单的程序.主页面将获取信息并使用该信息在数据库中创建一个新行.但是,我需要一个数字来输入主键.不幸的是,我不知道确定使用什么的正常方法.优选地,如果我删除一行,则该行的密钥将不会被重用.

初步搜索已经在mySQL中调出了AUTOINCREMENT关键字.但是,我仍然想知道这是否适用于我想要的以及这个问题的常见解决方案.

php mysql database

4
推荐指数
2
解决办法
523
查看次数

无法在heroku上启动rails应用程序

我正在尝试将rails应用程序部署到heroku,但不断收到以下错误.我曾经想过,管理postgres宝石将是heroku将要处理的事情.

我已经尝试了所有我能想到的东西,而不是在我的本地机器上安装postgres,如果我想安装postgres gem,我需要这样做.还有没有叫做的宝石activerecord-postgresql-adapter...我猜这是铁轨附带的标准适配器?

有关如何解决此问题的任何想法?

App failed to start

/usr/local/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/connection_adapters/abstract/connection_specification.rb:76:in `establish_connection': Please install the postgresql adapter: `gem install activerecord-postgresql-adapter` (no such file to load -- pg) (RuntimeError)
from /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/connection_adapters/abstract/connection_specification.rb:60:in `establish_connection'
from /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/connection_adapters/abstract/connection_specification.rb:55:in `establish_connection'
from /usr/local/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:438:in `initialize_database'
from /usr/local/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:141:in `process'
from /usr/local/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:113:in `send'
from /usr/local/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:113:in `run'
from /disk1/home/slugs/135415_c7f31f0_9f1f/mnt/config/environment.rb:9
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
 ... 14 levels...
from /usr/local/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/builder.rb:29:in `instance_eval'
from /usr/local/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/builder.rb:29:in `initialize'
from /home/heroku_rack/heroku.ru:1:in `new'
from /home/heroku_rack/heroku.ru:1
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails heroku

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

在PowerShell中删除最旧版本的目录

我有一个目录列表,其格式类似于版本号,并希望找到N个最旧的目录并删除它们.例如:

/1.2.3.4
/1.2.3.5
/1.2.3.6
Run Code Online (Sandbox Code Playgroud)

我已经尝试了一些东西,但我似乎无法到达我需要去的地方.

我的第一次尝试是这样的:

ls directory | sort Name | select -first 5 | rm -r
Run Code Online (Sandbox Code Playgroud)

但是我不确定这会在所有情况下都有效,因为这会(我猜)会做一个自然的事情.这总是会返回正确的结果吗?

我的下一个想法是我可以System.Version用来做我的排序.所以我最终得到了这个:

ls directory | %{[System.Version]$_.Name } | sort | select -first 5 | ???
Run Code Online (Sandbox Code Playgroud)

问题是我不知道如何将目录结果与排序联系起来......最好的方法是什么?

gci \\directory 产生

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----        12/19/2011   5:19 PM            1.0.1052.54849
d----        12/19/2011   5:29 PM            1.0.1053.54850
d----        12/19/2011   5:36 PM            1.0.1054.54851
d----        12/20/2011   2:11 PM            1.0.1056.54875
d----        12/12/2011  10:39 AM            1.0.991.54625
d----        12/12/2011  12:08 PM            1.0.992.54627
d----        12/12/2011  12:22 …
Run Code Online (Sandbox Code Playgroud)

powershell

3
推荐指数
1
解决办法
2636
查看次数

如何初始化类中的静态const指针?

class School
{
    static const int *classcapacity; 
};
Run Code Online (Sandbox Code Playgroud)

这个表达式来自我的考试,需要初始化我该怎么做?

c++ static pointers initialization const

2
推荐指数
1
解决办法
8220
查看次数

用户未登录时如何将用户重定向到登录页面

当用户登录时,我们将其用户ID存储在会话中.

session[:user_id] = user.id
Run Code Online (Sandbox Code Playgroud)

现在在我们网站的所有其他链接上,我们希望用户重定向 session[:user_id] == nil

我认为它将完成的方式是它将在控制器的每个方法中完成.

def show_customers
   if session[:user_id] == nil
     redirect_to (:controller => "authentication", :action => "login")
   #code related to show_customers goes here
end
Run Code Online (Sandbox Code Playgroud)

但这需要在每个控制器的每个方法中完成.

是否有更理智的Rails'y方式来做到这一点?

ruby-on-rails

2
推荐指数
1
解决办法
2107
查看次数

城堡拦截器与流畅的接口

我正在尝试获得一个我写的工作拦截器,但由于某种原因,当我请求我的组件时它似乎并没有实例化拦截器.我正在做这样的事情(原谅我,如果这不完全编译,但你应该得到这个想法):

container.Register(
    Component.For<MyInterceptor>().LifeStyle.Transient,
    AllTypes.Pick().FromAssembly(...).If(t => typeof(IView).IsAssignableFrom(t)).
    Configure(c => c.LifeStyle.Is(LifestyleType.Transient).Named(...).
                   Interceptors(new InterceptorReference(typeof(MyInterceptor)).
    WithService.FromInterface(typeof(IView)));
Run Code Online (Sandbox Code Playgroud)

我在断路器的构造函数中放置了断点,它似乎根本没有实例化它.

在过去,我使用XML配置注册了我的拦截器,但我很想使用流畅的界面.

任何帮助将不胜感激!

c# castle-windsor fluent-interface iinterceptor

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

创建类的新实例时出现C#StackOverFlowException

嗯,我遇到了一个奇怪的问题。当我创建类的新实例时,我得到StackOverflowExcepion :)

这是代码:

public partial class PlayerChooser : Window
{
public PlayerChooser()
    {
        InitializeComponent();
        textBoxPlayer1Name.Visibility = Visibility.Hidden;
        textBoxPlayer2Name.Visibility = Visibility.Hidden;
        textBoxPlayer3Name.Visibility = Visibility.Hidden;
        textBoxPlayer4Name.Visibility = Visibility.Hidden;

    }

    public static String player1Name;
    public static String player2Name;
    public static String player3Name;
    public static String player4Name;
    ...

    PlayerChooser.player1Name = textBoxPlayer1Name.Text;
    PlayerChooser.player2Name = textBoxPlayer2Name.Text;
    TwoPlayers501_new twoPlayers501_new = new TwoPlayers501_new();
    twoPlayers501_new.Show();
    ...
}
Run Code Online (Sandbox Code Playgroud)

以及发生异常的类和构造函数

public partial class TwoPlayers501_new : Window
{
    public TwoPlayers501_new()
    {
        InitializeComponent();

        textBlockPlayer1Name.Text = PlayerChooser.player1Name;
        textBlockPlayer2Name.Text = PlayerChooser.player2Name;
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

预先感谢,这可能有点琐碎...

c# stack-overflow wpf instance

0
推荐指数
1
解决办法
1123
查看次数