小编krn*_*krn的帖子

Ruby正则表达式:替换URL中的双斜杠

除了协议定义('http [s]://','ftp://'等)之外,我想替换URL中的所有多个斜杠.我该怎么做呢?

此代码替换,没有任何例外:

url.gsub(/\/\/+/, '/')
Run Code Online (Sandbox Code Playgroud)

ruby regex

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

Ruby正则表达式:如果冒号位于它们之前,则忽略引号

我正在尝试编写一个Ruby正则表达式,它可以捕获引用的短语,而不是那些在它们之前有":"的短语.例如:

奥巴马:"是的,我们可以!"

应该被忽略.

我写了一些测试:

http://rubular.com/r/OJmkLd68gc

ruby regex

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

Ruby on Rails:CanCan 和静态页面

我使用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)

我该如何解决?

ruby-on-rails cancan

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

Rails:检查数据库中是否存在记录的最佳方法是什么?

我的方法将国家/地区列表(代码,名称)加载到数据库中,但在此之前,如果国家/地区数据尚不存在,则必须检查.这很好用:

 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新手,我想学习最佳实践.所以,在这段代码中,我不确定可能(或可能不会)优化的两件事:

  1. find_by_attribute返回"select*from table"语句.在这种情况下,当我不需要来自数据库的任何数据时 - 我只想知道记录是否存在 - 选择整行对我来说似乎有点低效.有没有更好的方法来解决这个问题?例如,使用ActiveRecord"从表中选择1 ..."
  2. 这个问题可能很愚蠢,但我想确定:当我使用get_countries.each启动循环时,是否可以使用方法而不是变量?是不是每个循环调用相同的方法(N次)?换句话说,这会更有效率:

    countries = get_countries

    countries.each do | country |

对这几行代码的任何评论都是受欢迎的,因为它的工作原理并不一定意味着我正在以正确的方式进行.

谢谢.

activerecord ruby-on-rails

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

Ruby中的Proc.new:我什么时候需要使用它?

其示例中的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)吗?

ruby ruby-on-rails proc-object

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

Ruby on Rails ActiveRecord:我应该如何存储对象的状态?

我有一个用户模型,它有一个状态.州可以是以下任何一种:['未经验证','有效','已删除']

在数据库中存储对象状态的最佳方法是什么?

我应该创建三个布尔字段吗?这没有多大意义,因为我可能想要轻松扩展状态数量,同时只有一个状态可以是"真实的".

我应该使用state_machine gem来简单地切换常量值吗?

或者,对于这种工作,还有其他常用的方法,最佳实践或简单的宝石吗?

activerecord state ruby-on-rails

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

Python:解压方法中的字典

在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)

python variables

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

Ruby on Rails:updated_at - 在创建时设置为0

当我在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)

我该如何解决?

activerecord ruby-on-rails

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

Ruby regex:从字符串中提取url列表

我有一串图像的URL,我需要将其转换为数组.

http://rubular.com/r/E2a5v2hYnJ

我该怎么做呢?

ruby regex

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

Nokogiri:如何找到<select>的选中选项?

我需要获取所选 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)

ruby nokogiri

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

Ruby:发送HTTP GET请求,接收JSON输出 - 最快的方法是什么?

我的应用程序将多次调用Facebook API:示例.

发送HTTP GET请求并以JSON格式解析返回的输出的最快/最可靠的方法是什么?

我应该使用Curl :: Easy吗?如果是,它如何处理JSON?

ruby json

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