我有以下字符串
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位数字可见.
我有一个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中访问全局常量?
我想匹配符合以下模式的输入字段:
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)
我可能做错了什么?
我有一个简单的数组和计数器:
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。
我在这里缺少什么?
在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文件中的更改.
我正在使用 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) 给定这个多维数组:
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)
有没有办法获得我的功能,但没有副作用?