我有一个与组有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
我有这样的控制器动作:
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#编写的现有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,但我不能为我的生活弄清楚应该是什么.
我打算用php和mySQL制作一个非常简单的程序.主页面将获取信息并使用该信息在数据库中创建一个新行.但是,我需要一个数字来输入主键.不幸的是,我不知道确定使用什么的正常方法.优选地,如果我删除一行,则该行的密钥将不会被重用.
初步搜索已经在mySQL中调出了AUTOINCREMENT关键字.但是,我仍然想知道这是否适用于我想要的以及这个问题的常见解决方案.
我正在尝试将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) 我有一个目录列表,其格式类似于版本号,并希望找到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) class School
{
static const int *classcapacity;
};
Run Code Online (Sandbox Code Playgroud)
这个表达式来自我的考试,需要初始化我该怎么做?
当用户登录时,我们将其用户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方式来做到这一点?
我正在尝试获得一个我写的工作拦截器,但由于某种原因,当我请求我的组件时它似乎并没有实例化拦截器.我正在做这样的事情(原谅我,如果这不完全编译,但你应该得到这个想法):
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配置注册了我的拦截器,但我很想使用流畅的界面.
任何帮助将不胜感激!
嗯,我遇到了一个奇怪的问题。当我创建类的新实例时,我得到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# ×3
activerecord ×1
c++ ×1
const ×1
database ×1
f# ×1
heroku ×1
iinterceptor ×1
instance ×1
mysql ×1
owin ×1
php ×1
pointers ×1
powershell ×1
static ×1
suave ×1
validation ×1
wpf ×1