小编Let*_*ron的帖子

在GoLang中将字符串转换为json或struct

我想得到一个表示像这样的json的字符串:

{"votes":{"option_A":"3"}}

并在其中包含一个"计数"键,所以它结束如下:

{"votes":{"option_A":"3"},"count":"1"}

这就是我计划将它转换为json的原因,这样我就可以添加计数然后再将其作为字符串.问题是我不知道那个json的结构,所以我不能使用json.Unmarshal(in, &myStruct)因为结构不同.我怎样才能做到这一点?非常感谢你

json go

33
推荐指数
2
解决办法
8万
查看次数

在 Postman 中创建本地收集环境

我看过关于环境的邮递员文档:

https://www.getpostman.com/docs/v6/postman/environments_and_globals/variables

图像表示环境是集合的本地环境,我在邮递员中没有看到这种情况。

来自 doc 的邮递员图片

我有很多项目,每个项目都有自己的集合,我想为每个项目设置不同的环境 url。但是,我看到环境是通过所有集合共享的。如何使环境成为集合的本地环境?

谢谢!

postman

8
推荐指数
3
解决办法
3218
查看次数

gmaps4rails无法在指定的div id中呈现

我在Active Admin中使用Gmaps4Rails(Google Maps for Rails).到目前为止一切都很好,除了我必须在同一个节目页面上添加多个地图.

gem 'gmaps4rails', '~> 2.1', '>= 2.1.2'

我将脚本的导入提取为一个html,我只在show视图中调用一次,所以我没有收到错误:

/views/admin/_map_include_scripts.html.erb

<script src="//maps.google.com/maps/api/js?key=<%= ENV['GOOGLE_KEY'] %>"></script>
<script src="//cdn.rawgit.com/mahnunchik/markerclustererplus/master/dist/markerclusterer.min.js"></script>
<script src='//cdn.rawgit.com/printercu/google-maps-utility-library-v3-read-only/master/infobox/src/infobox_packed.js' type='text/javascript'></script>
Run Code Online (Sandbox Code Playgroud)

然后在节目中我做:

div id: 'map' do
  render '/admin/map_include_scripts'
  markers = DeliveryMarkersService.new(delivery).orders_markers
  render '/admin/map_scripts', markers: markers, map_div_id: 'map'
end
Run Code Online (Sandbox Code Playgroud)

views/admin/_map_scripts.html.erb我有:

<script>
  handler = Gmaps.build('Google');
  handler.buildMap({ provider: {}, internal: { id: '<%= map_div_id %>' }}, function(){
    markers = handler.addMarkers(<%=raw markers.to_json %>);
    handler.bounds.extendWith(markers);
    handler.fitMapToBounds();
    handler.getMap().setZoom(15);
  });
</script>
Run Code Online (Sandbox Code Playgroud)

到目前为止它工作得很棒!我看到地图,标记,一切.

现在我想添加第二个div与第二个map,所以我首先尝试将第一个div更改为以下内容以验证我可以告诉Gmaps在哪个div中显示它:

div id: 'map2' do
  render '/admin/map_include_scripts'
  markers = DeliveryMarkersService.new(delivery).orders_markers …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails gmaps4rails

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

如何从rubocop中排除全局变量?

我想从rubocop中排除一个全局变量,但我无法找到规则名称.我尝试添加

GlobalVars:
  Exclude:
    - redis
Run Code Online (Sandbox Code Playgroud)

.rubocop.yml,但没有运气.

错误说 Do not introduce global variables.

ruby code-analysis global-variables rubocop

6
推荐指数
2
解决办法
1962
查看次数

Heroku:使用Selenium时无法找到chromedriver

我有一个Ruby代码,它执行此操作:

browser = Watir::Browser.new(:chrome, switches: switches, headless: true)
browser.goto(....)
Run Code Online (Sandbox Code Playgroud)

当我在Heroku上运行代码时,我得到了

Selenium::WebDriver::Error::WebDriverError:  Unable to find chromedriver. Please download the server from http://chromedriver.storage.googleapis.com/index.html and place it somewhere on your PATH. More info at https://github
.com/SeleniumHQ/selenium/wiki/ChromeDriver.
Run Code Online (Sandbox Code Playgroud)

我见过像Heroku这样的帖子:使用Watir/Selenium时无法连接到chromedriver 127.0.0.1:9515, 但我不知道如何正确配置buildpacks.我尝试过:

heroku buildpacks:set https://github.com/heroku/heroku-buildpack-google-chrome
heroku buildpacks:set https://github.com/heroku/heroku-buildpack-chromedriver
Run Code Online (Sandbox Code Playgroud)

但是当我尝试将更改推送到Heroku时,我得到:

Error Plugin: chromedriver: files attribute must be specified in /Users/leticia/.local/share/heroku/node_modules/chromedriver/package.json
Run Code Online (Sandbox Code Playgroud)

有人可以一步一步地告诉我如何设置必要的构建包以使Watir gem在Heroku中工作吗?

谢谢

更新:

我需要'网络驱动程序',现在我得到了 Selenium::WebDriver::Error::WebDriverError: unable to connect to chromedriver 127.0.0.1:9515.

我已经尝试将env vars配置为:

ENV['GOOGLE_CHROME_BIN'] = "/app/.apt/opt/google/chrome/chrome"
ENV['GOOGLE_CHROME_SHIM'] = "/app/.apt/usr/bin/google-chrome-stable"
Run Code Online (Sandbox Code Playgroud)

并这样做:

options = …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails webdriver heroku buildpack

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

扮演偏执狂:真正摧毁有偏执儿童的记录

我正在使用 ActAsParanoid gem 软删除一些记录,比如说孩子们。父母并不偏执,我希望当父母被摧毁时,孩子们也会被真正摧毁。

class Parent < ApplicationRecord
  has_many :children, dependent: :destroy
end

class Child < ApplicationRecord
  act_as_paranoid 
  belongs_to :parent
end
Run Code Online (Sandbox Code Playgroud)

我现在看到子级被软删除,防止父级被破坏,因为子级中的引用变得无效。在父母被摧毁后,如何才能让孩子真正被摧毁?(我想知道是否可以避免自定义回调)

更新:

dependent: :delete_all如果存在先前已删除的子项之一,则使用会出现相同的错误。

ruby-on-rails acts-as-paranoid

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

ENV.fetch 与块或第二个参数有什么区别?

我不确定是否:

ENV.fetch("RAILS_MAX_THREADS") { 5 }
Run Code Online (Sandbox Code Playgroud)

和:

ENV.fetch("RAILS_MAX_THREADS", 5)
Run Code Online (Sandbox Code Playgroud)

是否相同。有什么不同?

ruby

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

有没有办法在请求规范中模拟 Pundit 策略授权?

我正在使用 Pundit 在我的 Rails 应用程序上进行授权,并且正在对我的请求进行单元测试。我已经成功测试了该策略,但现在我想验证我的请求是否正在使用该策略。我想以通用的方式做到这一点,我可以在任何请求规范中使用它(无论控制器、操作和策略如何)。老实说,在这一点上,我会遵循一种对所有请求通用的“期望任何策略都能获得授权”的说法。

对于索引操作(使用策略范围)很简单:

在请求描述中我说

RSpec.describe 'GET /companies', type: :request do
  include_context 'invokes policy scope'
end
Run Code Online (Sandbox Code Playgroud)

然后我将共享上下文定义为:

RSpec.shared_context 'invokes policy scope', shared_context: :metadata do
  before do
    expect(Pundit).to receive(:policy_scope!) do |user_context, relation|
      expect(user_context.user).to eq(user)
      expect(user_context.current_group).to eq(group)

      relation
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

但我该如何对授权方法做同样的事情呢?我不知道哪个具体策略将接收它,也不知道哪个具体控制器将调用authorize.

我不明白为什么 pundit 不提供自定义匹配器来验证某个请求实际上正在调用给定的策略,或者“模拟”授权/未授权的场景,因此我测试我的请求是否返回正确的状态代码。

有任何想法吗?

rspec ruby-on-rails rspec-rails pundit

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

Rails 6,ActiveRecord 将 float 或 bigint 列类型视为整数

我需要在 table 上的 postgres 列上接受非常大的整数值pre_transaction。列名是give_amount.

我尝试将列类型更改为bigint

change_column :pre_transactions, :give_amount, :bigint

但是即使在重新启动控制台后尝试保存记录时,我仍然收到以下错误:

ActiveModel::RangeError (1000000000000000000000 is out of range for ActiveModel::Type::Integer with limit 8 bytes)
Run Code Online (Sandbox Code Playgroud)

我还意识到,如果我PreTransaction在 rails 控制台中运行,bigint 列显示为integer列(对于在架构中声明为 bigint 但在 rails c 上显示为整数的外键相同),这很奇怪。

这就是为什么我将列类型更改为float. 现在,当我PreTransaction在 rails 控制台中运行时,我确实将列视为类型,float但是现在当我尝试保存它保存的记录时,但四舍五入为 1.0。

那么,如何在数据库中存储非常大的整数呢?

ruby-on-rails

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

在 Active Admin 中更改只读输入文本

我有一个协会,其中的代码有影响者。我想在代码表单中将影响者用户名显示为只读。

现在我正在做:

form do |f|
f.inputs 'Code' do
  f.input :influencer, input_html: { readonly: true, disabled: true  }, as: :string if !f.object.new_record?
Run Code Online (Sandbox Code Playgroud)

但我明白了,我想要影响者的姓名或用户名。

我需要显示一个字段。 不是对象。

有想法吗?

ruby-on-rails activeadmin

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

如何指定 Rails I18n 区域设置所有模型通用的属性转换?

我在我的es.yml语言环境中有以下代码:

\n\n
es:\n  activerecord:\n    models:\n      courier:\n        one: Repartidor\n        other: Repartidores\n      admin_user:\n        one: Administrador\n        other: Administradores\n    attributes:\n      courier:\n        ci: C\xc3\xa9dula\n        first_name: Nombre\n        last_name: Apellido\n        password: Contrase\xc3\xb1a\n        password_confirmation: Confirmaci\xc3\xb3n de contrase\xc3\xb1a\n        sign_in_count: Veces que inici\xc3\xb3 sesi\xc3\xb3n\n        created_at: Fecha de creaci\xc3\xb3n\n        updated_at: \xc3\x9altima actualizaci\xc3\xb3n\n      admin_user:\n        email: Email\n        last_sign_in_ip: \xc3\x9atima IP utilizada\n        last_sign_in_at: \xc3\x9atimo inicio de sesi\xc3\xb3n\n        current_sign_in_ip: Actual IP\n        current_sign_in_at: Actual inicio de sesi\xc3\xb3n\n        sign_in_count: Veces que inici\xc3\xb3 sesi\xc3\xb3n\n        created_at: Fecha de creaci\xc3\xb3n\n        updated_at: \xc3\x9altima actualizaci\xc3\xb3n\n        password: Contrase\xc3\xb1a\n        password_confirmation: Confirmaci\xc3\xb3n de …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails rails-i18n

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

允许在字符串列上使用 nil 值,但在 Rails 迁移上不允许使用空字符串

我有一个创建字符串列的迁移。我想让我的列为零,但我不希望它具有空字符串值 ( '')。我可以在迁移或模型中包含任何内容来验证如果不是 nil,则字符串不为空吗?

谢谢!

ruby-on-rails

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