默认情况下,每当我加载一个表时,phpMyAdmin就会显示30行(查询包含"LIMIT 30").我通常希望看到(最多)几百行.
有没有办法更改默认设置?
我有一个Ecto.Query和一个Repo,这样我就可以打电话Repo.all(query)并获得结果.但是,结果并不是我所期望的.
如何查看Repo将从中生成的原始SQL Ecto.Query?
在定义rake任务时,可以使用名称空间,如下所示:
namespace :demolition do
task :fire_bazooka do
puts "kaboom!"
end
end
Run Code Online (Sandbox Code Playgroud)
这可以称为rake demolition:fire_bazooka.
也可以为任务指定先决条件,如下所示:
# Single prerequisite
task :fire_bazooka => :load_bazooka do ....
# Multiple prerequisites
task :fire_bazooka => [:safety_check, :load_bazooka]
Run Code Online (Sandbox Code Playgroud)
但是,如何使用命名空间任务作为先决条件?显然,这不起作用:
task :photograph_destruction => :demolition:fire_bazooka
Run Code Online (Sandbox Code Playgroud) 我正在写一个Rake任务,我想传递一个数组作为其中一个参数.这就是我目前的方式.
task :change_statuses, :ids, :current_status, :new_status do |task, args|
puts "args were #{args.inspect}"
end
Run Code Online (Sandbox Code Playgroud)
我尝试过以下方式运行任务:
# First argument as array
rake "change_statuses[[1,2,3], active, inactive]"
# First argument as string
rake "utility:change_account_statuses['1,2,3', foo, bar]"
Run Code Online (Sandbox Code Playgroud)
我的预期输出是:
args were {:ids=> [1,2,3], :current_status=> 2 , :new_status=> 3}
Run Code Online (Sandbox Code Playgroud)
但是,我在每种情况下的实际输出是:
args were {:ids=>"[1", :current_status=>"2", :new_status=>"3]"}
Run Code Online (Sandbox Code Playgroud)
如何将数组传递给Rake任务?
我有一个名为票证的Rails应用程序示例,它可以查看和编辑出售给各个客户的虚构票证.在tickets_controller.rb里面def index,我有这个由脚手架生成的标准行:
@tickets = Ticket.find(:all)
Run Code Online (Sandbox Code Playgroud)
为了按名称对门票进行排序,我发现了两种可能的方法.你可以这样做:
@tickets = Ticket.find(:all, :order => 'name')
Run Code Online (Sandbox Code Playgroud)
......或者这样:
@tickets = Ticket.find(:all).sort!{|t1,t2|t1.name <=> t2.name}
Run Code Online (Sandbox Code Playgroud)
(提示:Ruby文档解释了sort!它将修改它正在排序的数组,而不是sort单独的,它返回已排序的数组但保持原始不变).
你通常使用什么策略?当你可以使用.sort!相对于:order => 'criteria'语法?
发送消息时,Ruby对象会搜索它是否有一个按该名称响应的方法.其方法查找按以下顺序搜索,并使用它找到的第一个方法.
Module.prepend存在之前写的)或者,更简单地说,它看起来自己,然后self.class.ancestors按照它们列出的顺序进行所有操作.
调用该方法时遵循此查找路径; 如果您创建一个类的实例,然后重新打开该类并添加一个方法或通过模块混合一个方法,现有实例将获得对该方法的访问权限.
如果所有这些都失败了,它会查看它是否有method_missing方法,或者它的类是否有,它的父类等.
我的问题是:除了手工检查代码,或使用类似的示例方法puts "I'm on module A!",你能告诉给定方法的来源吗?例如,你可以列出一个对象的方法,并看到"这个是在父类上,这个是在模块A上,这个是在类上并覆盖父类",等等?
我刚刚在我的工作机器上安装了Cygwin,并希望使用我在家里的Linux机器上使用的.vimrc文件.
我有点不确定我在Cygwin下的bash提示符下放入了什么目录,但我想我会在那里创建一个名为.vim的子目录,对吧?
我正在用Rspec测试我的ActiveRecord模型.我刚刚在我的一个验证中添加了一条自定义错误消息,如下所示:
validates :accepted_terms_at, :presence => {:message => 'You must accept the Terms and Conditions to use this site.'}
Run Code Online (Sandbox Code Playgroud)
现在,以下测试失败:
it { should validate_presence_of(:accepted_terms_at) }
Run Code Online (Sandbox Code Playgroud)
......有错误Expected errors to include "can't be blank" when accepted_terms_at is set to nil.
因此测试失败,因为它正在查看验证错误消息并期望找到默认消息.
如何告诉Rspec新验证消息应该是什么?
1)消息作为参数:
it {should validate_presence_of(:accepted_terms_at, :message => 'your message')}
这给出了错误 wrong number of arguments (2 for 1)
2)作为链式方法调用的消息
it {should validate_presence_of(:accepted_terms_at).with('your message')}
这会引发错误,因为没有with方法.
使用jQuery Validation插件验证表单,如何确认字符串长度恰好为X个字符?
我有一个表格,它同时使用jQuery Validate和Masked Input作为电话号码和美国邮政编码字段.
例如,对于美国邮政编码,屏蔽输入仅允许输入数字,并强制格式为"99999"或"99999-9999"(其中9可以是任意数字).验证规则要求相同.但在某些情况下,Validate会在某个字段实际有效时将其标记为无效.
jQuery Validate在邮政编码字段中使用的正则表达式是^\d{5}$|^\d{5}\-\d{4}$.
我正在使用蒙面输入的面具是 .mask('99999?-9999')
当我执行以下操作时,会产生它们之间的冲突:
如果我填写一个9位数的邮编,则不会发生此问题.
我认为这个错误是因为在5位数字拉链的情况下,Masked Input暂时插入"-____"以向用户显示他们可以选择输入短划线和另外4位数字.这在模糊时被删除,但在删除之前,该字段已经过验证并失败,因为不允许使用下划线.
这个假设得到以下事实的支持:如果随后重新验证表单,则zip字段将通过.我这样做了两个方面:
通过设置blur重新验证该特定字段的事件.例如:
$("#zipcode").blur(function(){$(this).closest('form').validate().element($(this));});
这可以作为一个hacky解决方案,但不是很令人满意,因为1)默认设置已经重新验证模糊,所以这是重复的,2)它需要除常规验证规则之外的其他代码.
还有其他人遇到过这个问题吗?您是否拥有比设置其他模糊事件监听器更优雅的解决方案?
即使应用上面的hacky解决方案也不如我想的那样好.例如,这不起作用:
$appDiv.delegate('input,select,textarea','blur',function(){
$(this).closest('form').validate().element($(this));
});
Run Code Online (Sandbox Code Playgroud)
......也不是这样的:
$('input,select,textarea').live('blur',function(){
$(this).closest('form').validate().element($(this));
});
Run Code Online (Sandbox Code Playgroud)
......但是这样做:
$('input,select,textarea').each(function(){
$(this).blur(function(){
$(this).closest('form').validate().element($(this));
});
});
Run Code Online (Sandbox Code Playgroud)
由于这些元素是由AJAX加载的,因此.each每次加载表单部分时都必须运行该版本.
ruby ×4
jquery ×2
rake ×2
validation ×2
activerecord ×1
cygwin ×1
ecto ×1
elixir ×1
maskedinput ×1
mysql ×1
namespaces ×1
php ×1
phpmyadmin ×1
rspec ×1
shoulda ×1
sorting ×1
vim ×1