【问题标题】:Ruby on Rails: ActiveAdmin scope using Array showing wrong records countingRuby on Rails:使用显示错误记录计数的数组的 ActiveAdmin 范围
【发布时间】:2014-12-09 16:30:29
【问题描述】:

我是 Ruby on Rails 的新手,我已经为此苦苦挣扎了几天。

我有一个 ActiveAdmin 页面,它从不同的数据库中提取信息。

我创建了几个范围部分来处理不同的类别。 ActiveAdmin 的代码与此类似:

ActiveAdmin.register MyItem do

  scope :all

  scope :first_db do |myitem|
     myitem.where(deleted: false)
  end

  scope :FromDBs, show_count=>true do |myitem|
   Kaminari.paginate_array(MyItem.get_from_dbs).page(params[:page])
  end

  index do
  column :name
  column :value

end

现在,我遇到的问题是范围“FromDBs”。它显示在顶部作为记录数 记录的数量为 25(这是我的分页页面大小)而不是总量 数组中的记录数。如果我转到页脚,“下一步”按钮会显示正确的记录数量。

所以,我的问题是,如何使“范围”部分显示 数组上的记录数量,而不是每页的记录数量。

在某种程度上,我尝试遵循here 的一些建议,但不是真的 为我工作。这就是为什么我使用 Kaminari 来对数组进行分页。

感谢您的指点。

【问题讨论】:

  • 为什么不在模型类中定义范围?在模型中定义范围并在 ActiveAdmin 资源定义中使用它们会更容易。

标签: ruby-on-rails ruby activeadmin


【解决方案1】:

您不必在 ActiveAdmin 资源块中定义范围,而是希望在模型类中定义范围。我有一个类似的设置,如下所示:

class Manager < ActiveRecord::Base
  scope :active,    -> { where deleted_at: nil }
  scope :inactive,  -> { where.not deleted_at: nil }
  ...
end
ActiveAdmin.register Manager do
  scope :active, default: true
  scope :inactive
end

这会相应地处理记录计数。

【讨论】:

  • 感谢您的回复。如果我的模型只从一个数据库中检索数据,那会很好用。在我试图描述的场景中,模型从不同的数据库中提取,所以我的模型返回一个数组,其中包含来自不同数据库的结果。有办法处理吗?
  • get_from_dbs 方法是什么样的?我不明白“来自不同的数据库”是什么意思。您的意思是分开的数据库表吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-19
  • 1970-01-01
  • 1970-01-01
  • 2013-01-04
  • 2014-03-02
  • 1970-01-01
相关资源
最近更新 更多