小编Don*_*ato的帖子

正则表达式,用于屏蔽社会安全号码的最后4位数字

我有以下字符串

ssn = "166557649"
Run Code Online (Sandbox Code Playgroud)

我想这样替换它:

ssn = "*****7649"
Run Code Online (Sandbox Code Playgroud)

当我使用花括号并指定限制时,遗憾的是用一个"*"替换所有数字:

ssn.gsub(/\d{5}/,"*")
 => "*7649"
Run Code Online (Sandbox Code Playgroud)

我可以使用方括号替换多个数字,但最终会替换所有数字:

ssn.gsub(/[0-9]/,"*")
 => "*********" 
Run Code Online (Sandbox Code Playgroud)

我也尝试过这个:

ssn.gsub(/[0-9]{5}/,"*")
=> "*7649" 
Run Code Online (Sandbox Code Playgroud)

为了澄清,我想要替换除最后4位数之外的所有数字.换句话说,即使社会安全号码有20位数(即使这种情况永远不会发生),那么它应该用星号代替前16位数字,然后让最后4位数字可见.

ruby regex

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

在环境之前加载初始化程序

我有一个Rails应用程序,并将所有重要配置(例如sendgrid,新遗物,twilio,airbrake等)放在config / config.yml文件中。该文件如下所示:

development:
  sendgrid:
    username: username
    password: password

test:
  sendgrid:
    username: username
    password: password

production:
  sendgrid:
    username: username
    password: password
Run Code Online (Sandbox Code Playgroud)

然后在config / initializers / global_configuration.rb中,加载正确的环境配置:

APP_CONFIG = YAML.load_file("#{Rails.root}/config/config.yml")[Rails.env]
Run Code Online (Sandbox Code Playgroud)

现在,我希望能够在config / environments / development或config / environments / production中访问此全局常量,如下所示:

  config.action_mailer.smtp_settings = {
      address: 'smtp.sendgrid.net',
      port: 587,
      domain: APP_CONFIG['sendgrid']['domain'],
      authentication: "plain",
      enable_starttls_auto: true,
      user_name: APP_CONFIG['sendgrid']['username'],
      password: APP_CONFIG['sendgrid']['password']
  }
Run Code Online (Sandbox Code Playgroud)

不幸的是,当Rails启动时,它会引发以下错误:

Uncaught exception: uninitialized constant APP_CONFIG
Run Code Online (Sandbox Code Playgroud)

似乎在配置/初始化程序之前加载了配置/环境。如何解决这个问题,以便可以在config / environments中访问全局常量?

ruby-on-rails

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

jquery使用regex查找id包含字符串的选择器

我想匹配符合以下模式的输入字段:

a_profile_contact_attributes_addresses_attributes_0_address b_store_contact_attributes_addresses_attributes_3_address somethingelse_contact_attributes_addresses_attributes_44_address

换句话说,我想使用以下正则表达式:

/contact_attributes_addresses_attributes_\d+_address/
Run Code Online (Sandbox Code Playgroud)

使用jQuery,我尝试了以下但它返回一个空的结果集:

$('input[id*="contact_attributes_addresses_attributes_' + /\d+/ + '_address"]')
Run Code Online (Sandbox Code Playgroud)

我可能做错了什么?

regex jquery

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

带简写赋值的后置递增运算符

我有一个简单的数组和计数器:

var data = [1];
var i = 0;
Run Code Online (Sandbox Code Playgroud)

快捷方式分配产生 2:

data[i++] *= 2
// 2
Run Code Online (Sandbox Code Playgroud)

我期待 3。data[i++] 与 2 相乘,所以 1 * 2 是 2,然后将其分配给 data[i++],现在变成 2,然后在语句评估 ++ 的副作用后导致 i为 3。

以下也给了我意想不到的结果。它产生 NaN 很奇怪。

var data [1];
var i = 0;
data[i++] = data[i++] * 2;
// NaN
Run Code Online (Sandbox Code Playgroud)

我又期待3。data[i++] 首先计算为 1,然后与 2 相乘,然后将该 2 值分配给 data[i++] 中的 i,然后在语句完成后递增该值,使其成为 3。

我在这里缺少什么?

javascript

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

全局常量不使用正确的值更新

在Rails 4中,我有一个config/config.yml,我想与config/secrets.yml分开.我更新了配置以包含twilio信息:

development:
  sendgrid:
    username: username
    password: password
    domain: domain
  twilio:
    account_sid: account_sid
    auth_token: auth_token
    twilio_number: twilio_number
Run Code Online (Sandbox Code Playgroud)

在config/application.rb中,我加载了全局常量(我无法在初始化程序中加载它,因为我需要在环境中使用它/*rb并在初始化程序之前加载环境/*rb).这是全局常量:

module RailsDevise
  class Application < Rails::Application
    ...
    config.before_configuration do
      ::APP_CONFIG = YAML.load_file("#{Rails.root}/config/config.yml")[Rails.env]
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

加载控制台时,不会反映更改:

> APP_CONFIG
 => {"sendgrid"=>{"username"=>"username", "password"=>"password", "domain"=>"domain"}, "twilio"=>{"account_sid"=>"account_sid", "auth_token"=>"auth_token"}} 
Run Code Online (Sandbox Code Playgroud)

但是,他们确实在那里:

> YAML.load(File.open("#{Rails.root}/config/config.yml"))
{"development"=>{"sendgrid"=>{"username"=>"username", "password"=>"password", "domain"=>"domain"}, "twilio"=>{"account_sid"=>"account_sid", "auth_token"=>"auth_token", "twilio_number"=>"twilio_number"}}
Run Code Online (Sandbox Code Playgroud)

什么样的缓存可以进行?我多次重新加载控制台,它应该重新加载整个应用程序.但它没有检测到yml文件中的更改.

ruby ruby-on-rails

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

向 ruby​​ 添加一个 reduce_with_index 迭代器

我正在使用 ActiveRecord。它有一个方便的方法叫做 group_by。当我将它与我的 activerecord 对象一起使用时,我得到以下哈希值:

{["junior"]=>[#<Lead id: 1, created_at: "2015-02-13 02:34:39", updated_at: "2015-02-13 02:35:27", case_enabled: true>, #<Lead id: 2, created_at: "2015-02-13 20:48:19", updated_at: "2015-02-13 20:48:19", case_enabled: nil>, ["senior"]=>[#<Lead id: 3, created_at: "2015-02-13 20:48:19", updated_at: "2015-02-13 20:48:19", case_enabled: nil>, #<Lead id: 4, created_at: "2015-02-13 20:49:16", updated_at: "2015-02-13 20:49:16", case_enabled: nil>]} 
Run Code Online (Sandbox Code Playgroud)

但是,我想要一个带有子哈希的哈希,该哈希包含作为 ActiveRecord::Relation 和列数据的集合。所以这就是我想出的:

i = 0
r = group.reduce({}) do |acc, (k,v)|
  h = {}
  active_record_relation = where(id: v.map(&:id))
  h["#{k.first}_collection"] = active_record_relation
  h["#{k.first}_columns"] = Classification.where(code: k.first).first.default_fields
  acc[i] = h
  i += …
Run Code Online (Sandbox Code Playgroud)

ruby

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

返回多维数组的特定索引,没有副作用

给定这个多维数组:

a = [ [0,'abc'], [1,'def'] ]
Run Code Online (Sandbox Code Playgroud)

我想只返回键(其中键是子数组的索引0)和只返回值(其中值是子数组的索引1):

a.keys
# => [0,1]

a.values
# => ['abc','def']
Run Code Online (Sandbox Code Playgroud)

我的解决方案是使用map返回一个集合并使用shift和pop返回正确的项目:

a.map(&:shift)
=> [0, 1] 
a.map(&:pop)
=> ["abc", "def"]
Run Code Online (Sandbox Code Playgroud)

伟大的工作,但后来我注意到副作用:

 a
 => [[], []] 
Run Code Online (Sandbox Code Playgroud)

有没有办法获得我的功能,但没有副作用?

ruby arrays

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

标签 统计

ruby ×4

regex ×2

ruby-on-rails ×2

arrays ×1

javascript ×1

jquery ×1