除了协议定义('http [s]://','ftp://'等)之外,我想替换URL中的所有多个斜杠.我该怎么做呢?
此代码替换,没有任何例外:
url.gsub(/\/\/+/, '/')
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个Ruby正则表达式,它可以捕获引用的短语,而不是那些在它们之前有":"的短语.例如:
奥巴马:"是的,我们可以!"
应该被忽略.
我写了一些测试:
我使用CanCan 2.0 gem 进行授权,使用high_voltage gem 进行静态页面。
在我的 routes.rb 文件中,我有:
match 'about' => 'high_voltage/pages#show', id: 'about'
Run Code Online (Sandbox Code Playgroud)
我想在我的 ability.rb 文件中公开它,但这两行都没有这样做:
can :read, :pages
can :read, 'high_voltage/pages'
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
我的方法将国家/地区列表(代码,名称)加载到数据库中,但在此之前,如果国家/地区数据尚不存在,则必须检查.这很好用:
def self.load_countries
get_countries.each do |country|
code, name = country
if find_by_code(code).nil?
create({ 'name' => name, 'code' => code })
end
end
end
Run Code Online (Sandbox Code Playgroud)
但是,由于我是Ruby新手,我想学习最佳实践.所以,在这段代码中,我不确定可能(或可能不会)优化的两件事:
这个问题可能很愚蠢,但我想确定:当我使用get_countries.each启动循环时,是否可以使用方法而不是变量?是不是每个循环调用相同的方法(N次)?换句话说,这会更有效率:
countries = get_countries
countries.each do | country |
对这几行代码的任何评论都是受欢迎的,因为它的工作原理并不一定意味着我正在以正确的方式进行.
谢谢.
其示例中的date_validator具有注释:
Using Proc.new prevents production cache issues
Run Code Online (Sandbox Code Playgroud)
这是否意味着,我的代码中的任何地方,我使用当前时间相关的方法(Time.now,1.day.since(Time.zone.now)等)我应该用Proc.new {}包围它们?
我不完全理解这一点,因为更换
time_now = Time.now.utc
Run Code Online (Sandbox Code Playgroud)
同
time_now = Proc.new { Time.now.utc }
Run Code Online (Sandbox Code Playgroud)
对我来说没有意义(返回新类型的对象).
那么,问题是,何时以及如何使用Proc.new与时间相关的方法?这仍然适用于最新版本的Ruby(1.92)和Rails(3.1)吗?
我有一个用户模型,它有一个状态.州可以是以下任何一种:['未经验证','有效','已删除']
在数据库中存储对象状态的最佳方法是什么?
我应该创建三个布尔字段吗?这没有多大意义,因为我可能想要轻松扩展状态数量,同时只有一个状态可以是"真实的".
我应该使用state_machine gem来简单地切换常量值吗?
或者,对于这种工作,还有其他常用的方法,最佳实践或简单的宝石吗?
在Python中,我想通过加载一些变量来创建一个新对象.最简单的方法是传递字典,但这使编程非常烦人:而不是self.health我必须一直调用self.params ['health'].有没有办法动态设置变量名称(字段)?
我有:
DEFAULT_PARAMS = {
'health': 10,
'position': []
}
def __init__(self, params = DEFAULT_PARAMS):
self.params = params
print self.params['health']
Run Code Online (Sandbox Code Playgroud)
我希望有:
DEFAULT_PARAMS = {
'health': 10,
'position': []
}
class Name():
def load(self, params):
# what goes here?
def __init__(self, params = DEFAULT_PARAMS):
self.load(params)
print self.health
Run Code Online (Sandbox Code Playgroud) 当我在query表上创建一个新记录时,我希望updated_at(timestamp)为'0000-00-00 00:00:00' - 而不是当前时间戳,因为Ruby on Rails默认设置.
MySQL字段:
`updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP
Run Code Online (Sandbox Code Playgroud)
但是,Ruby on Rails生成了这个SQL查询:
INSERT INTO `queries` (`updated_at`) VALUES ('2011-01-04 17:40:15')
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
我需要获取所选 HTML 选项的值:
<select name="DisplayCurrency" id="DisplayCurrency" >
<option value="GBP" >Pounds Sterling</option>
<option value="EUR" selected="selected" >Euros</option>
<option value="CHF" >Swiss Francs</option>
<option value="DKK" >Danish Krona</option>
<option value="CSK" >Czech Krowns</option>
<option value="HUF" >Hungarian Forints</option>
<option value="PLN" >Polish Zloty</option>
</option>
</select>
Run Code Online (Sandbox Code Playgroud)
我用 Nokogiri 试过这个,但它不起作用:
page.search('//select[@id="DisplayCurrency"]/option[@selected=selected]').attr('value')
Run Code Online (Sandbox Code Playgroud) 我的应用程序将多次调用Facebook API:示例.
发送HTTP GET请求并以JSON格式解析返回的输出的最快/最可靠的方法是什么?
我应该使用Curl :: Easy吗?如果是,它如何处理JSON?
ruby ×6
activerecord ×3
regex ×3
cancan ×1
json ×1
nokogiri ×1
proc-object ×1
python ×1
state ×1
variables ×1