我正在为客户端实现Rails Admin,并且我有两个模型Job
和Candidacy
。 Job
有很多candidacies
。从Rails Admin作业面板中,我想做一个日期过滤器来搜索两个日期之间是否存在候选资格。
这里是代码:
# app/models/job.rb
class Job < ApplicationRecord
has_many :candidacies
end
# app/models/candidacy.rb
class Candidacy < ApplicationRecord
belongs_to :job
end
# config/initializers/rails_admin.rb
RailsAdmin.config do |config|
config.model 'Job' do
list do
field :candidacies, :date do
searchable [{Candidacy => :created_at}]
end
end
end
end
当我单击“候选人筛选”并在两个日期之间进行筛选时。引发错误
ActiveRecord::StatementInvalid in RailsAdmin::Main#index
PG::UndefinedTable: ERROR: missing FROM-clause entry for table "candidacies"
我具有有关SQL查询的所有详细信息,并且它没有加载candidacies
表。
SELECT "jobs".* FROM "jobs" WHERE candidacies.created_at BETWEEN '2019-12-11 00:00:00' AND '2019-12-14 23:59:59'
知道如何配置rails admin来加载表candidacies
吗?
谢谢!!!
第一编辑:] >>
[在模型default_scope
中添加Job
时有效。但是我不知道这是否是正确的方法。
# app/models/job.rb
class Job < ApplicationRecord
has_many :candidacies
default_scope { eager_load(:candidacies) }
end
我正在为客户端实施Rails Admin,并且我有两个模型Job和Candidacy。一份职位有很多候选人。从Rails Admin职位面板中,我想做一个日期过滤器,以在两个日期之间进行搜索...
为了避免在以后的所有作业查询中急于加载另一个表,我建议您仅将范围保留在作业列表配置中。