小编Ste*_*hen的帖子

在 Rails 中使用范围进行热切加载

我发现了许多标题相似的问题,但没有一个能解决我的问题。

我有一个模型Program,它有很多Videos

class Program < ActiveRecord::Base
  has_many :videos
  ...
end
Run Code Online (Sandbox Code Playgroud)

然后我有范围Video

class Video < ActiveRecord::Base
  belongs_to :program

  scope :trailer, -> { where(video_type: 0) }
  ...
end
Run Code Online (Sandbox Code Playgroud)

首先,当我有一个程序列表并想要访问视频时,我没有使用include方法的N+1 程序:

> @programs.includes(:videos).map { |p| p.videos.size }
  Program Load (0.6ms)  SELECT  "programs".* FROM "programs"  ORDER BY "programs"."id" ASC LIMIT 10
  Video Load (0.5ms)  SELECT "videos".* FROM "videos" WHERE "videos"."program_id" IN (8, 9, 10, 11, 12, 13, 14, 15, 16, 17)
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试获取范围时,它会再次触及数据库:

> @programs.includes(:videos).map { |p| …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails

10
推荐指数
2
解决办法
2134
查看次数

带有 rails 的编辑表单中的 json 字段

我有一个项目ruby 2.5rails 5.2。它有一个名为 的模型Fruit,其中包括两个字段:name:stringoptions:json。我想使用的选项来存储像一些数据colorsize等等。

现在我有一个表格:

<%= form_with(model: fruit, local: true) do |form| %>

  <div class="field">
    <%= form.label :name %>
    <%= form.text_field :name %>
  </div>

  <div class="field">
    <%= form.label :options %>

    <%= form.fields :options do |field| %>
      <%= field.text_field :color %>
      <%= field.text_field :size %>
    <% end %>
  </div>

  <div class="actions">
    <%= form.submit %>
  </div>
<% end %>
Run Code Online (Sandbox Code Playgroud)

它将成功地将数据保存到数据库中,包括 .csv 文件中的颜色和大小options。但是,它无法在选项中显示现有数据edit

这意味着当我编辑水果时,如果我不重新设置颜色和大小,现有数据将丢失。

有谁知道如何使它正常工作? …

ruby-on-rails

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

如何将Google Play帐户与Google Developer Project相关联

我使用了google play开发者控制台,并希望设置API访问权限.我之前有一个谷歌开发人员项目所以我想添加现有的项目.

我按照文档链接:

使用现有的API项目

如果您已经是Google Play Developer API的用户,则可以按照以下步骤链接到现有的API项目.如果未列出您要链接到的API项目,请确定您的Google Play开发者控制台帐户已被指定为所有者,并且已启用Google Play Developer API.

  1. 转到Google Play开发者控制台上的API访问页面.

  2. 接受API服务条款.

  3. 选择您要链接的项目.

  4. 单击链接.

您的Google Play开发者控制台现已链接到API项目.

但是,在我的API访问页面中,只有Create new project按钮,我不知道按照步骤链接现有的.没有列出项目.

有人有想法吗?谢谢.

android google-play google-play-developer-api

5
推荐指数
2
解决办法
3181
查看次数

如何防止在 sidekiq 上重试某些异常/错误

我有一个 sidekiq 工人,它将请求 3rd 方 api(Mailchimp) 并得到一些回应。有时它会响应一条错误消息,api gem 将引发错误。

但是,这些错误是正常的,无需重试。所以我希望 Sidekiq 在出现这些错误时防止重试。

我已经尝试了一个rescuesimple ,但它不会阻止 sidekiq 捕获引发的错误。

def preform(id)
  UpdateMailchimpService.new.(id)
rescue
  Mailchimp::ListInvalidBounceMemberError
end
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?谢谢

更新

最后发现我的问题是我们的部署工具坏了(部署失败但没有实现)。实际上,Sidekiq 将忽略任何已获救的错误/异常,并且不会重试并报告给 Bugsnag。

Bugsnag 的文档中,它明确地说:

应该安装和配置 Bugsnag,任何未处理的异常都会被自动检测到,并且应该出现在你的 Bugsnag 仪表板中。

github上的这篇文章没有明确的解释,所以这就是我对这个问题感到困惑的原因。

ruby ruby-on-rails exception sidekiq mailchimp-api-v3.0

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

如何通过telnet在本地连接到phoneix框架应用程序?

我想使用telnet测试我的phoenix应用程序,但是它显示Connection closed by foreign host.得非常快,并且telnet退出了。

$ telnet 127.0.0.1 4000
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.
Run Code Online (Sandbox Code Playgroud)

phoenix应用程序非常简单,没有任何额外的配置。如何使用telnet连接到它?

telnet elixir cowboy phoenix-framework

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

Int 到 BigInteger,有什么区别?

我把modExp函数从int转为BigInteger,结果不一样,这两个函数有什么区别?

谢谢!!!

带有 BigInteger 的函数,结果始终为 1:

public static BigInteger modExp(BigInteger a, BigInteger b, BigInteger n) {
    BigInteger two = new BigInteger("2");       
    if (b == BigInteger.ZERO)
        return BigInteger.ONE;
    BigInteger t = modExp (a, b.divide(two), n);
    BigInteger c = (t.pow(2)).mod(n);
    if (b.mod(two) == BigInteger.ONE)
        c = (c.multiply(a)).mod(n);
    return c;       
}
Run Code Online (Sandbox Code Playgroud)

带int的函数:

public static int modexp(int a, int b, int n) {
    if (b == 0) return 1;
    long t = modexp(a, b/2, n);  // use long for intermediate computations to eliminate overflow …
Run Code Online (Sandbox Code Playgroud)

java math biginteger

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

如何在rails上使用bootstrap3-datetimepicker-rails gem?

我已经使用bootstrap3-datetimepicker-railsgem在我的rails应用程序中选择日期和日期时间.

我目前的实施是:

HTML:

f.input :date, as: :string, :input_html => { :id => "datepicker" }
f.input :datetime, as: :string, :input_html => { :id => "datetimepicker" }
Run Code Online (Sandbox Code Playgroud)

使用Javascript:

$(function () {
    $('#datepicker').datetimepicker({
      format: 'L'});
    $('#datetimepicker').datetimepicker();
  });
Run Code Online (Sandbox Code Playgroud)

但是,我遇到了一些问题:

1.每个id的日期选择器只能使用一次,这意味着如果我有两个日期选择器,我需要编写两个javascript代码$('#datepicker1').datetimepicker();$('#datepicker2').datetimepicker(); .有没有更好的方法来重用代码?

2. datetimepicker没有拉出选择对话框,我用它来输入datetime类型属性.单击该字段时,日期和时间将自动输入到字段中,未显示选择对话框.

3.有没有办法只选择时间,但用默认日期填写日期时间类型属性?

谢谢.

ruby-on-rails datetimepicker bootstrap-datetimepicker

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

omn​​iauth gem 如何创建路线?

我正在使用omniauth来实现身份验证策略,但有一件事我无法理解:omniauth会生成一些要使用的路由,但我无法通过rake routes.

例如,gemomniauth -saml将生成auth/saml路由,当我访问该路径时,它将启动请求阶段。但是,我在路线列表中找不到它。因此,我很难知道哪些路由已经创建并且可以直接使用。

有人可以帮助我吗?

干杯

ruby-on-rails omniauth

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

这是零的红宝石成语吗?

嗨,我想有一个条件,当它为nil时,它为true,或者它调用check方法并返回true / false。例如:

(apple.nil? || apple.sweet?) && (pear.nil? || pear.sweet?)
Run Code Online (Sandbox Code Playgroud)

它检查所有水果是否都甜(这里只有苹果和梨)。是否有任何红宝石成语来简化此代码?

干杯

ruby

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

在 elixir 中迭代地图和更新值?

我有一个地图/结构数据:

%{foo: "102", zoo: "103", bar: "104"}
Run Code Online (Sandbox Code Playgroud)

我想迭代地图并将值更新为整数,我该怎么做?

result = %{foo: 102, zoo: 103, bar: 104}
Run Code Online (Sandbox Code Playgroud)

干杯

elixir

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