簡體   English   中英

activeadmin和acts_as_taggable_on生成ambiguous_column_name錯誤

[英]activeadmin and acts_as_taggable_on generates ambiguous_column_name error

我正在使用active_admin和acts_As_taggable_on,我正在嘗試制作一個過濾器。 這是型號代碼:

class Person < ApplicationRecord
    acts_as_taggable_on :expertise, :industry
end

這是過濾器:

filter :industry, as: :select, collection: Person.industry_counts.pluck(:name, :name)

這是我提交過濾器時得到的錯誤:

SQLite3::SQLException: ambiguous column name: created_at: SELECT COUNT(DISTINCT "people"."id") FROM "people" LEFT OUTER JOIN "taggings" ON "taggings"."taggable_id" = "people"."id" AND "taggings"."context" = ? AND "taggings"."taggable_type" = ? WHERE "taggings"."tag_id" = 0 AND (created_at > '2017-01-17 00:22:53.923894')

我該如何解決?

事實證明,active_admin使用ransack gem來處理它的過濾器。 我不得不在模型中定制“搜索”以使其工作:

def self.in_industry(industries)
  Person.tagged_with(industries, :any => true, :on => :industry).select{|a| a} #use select to convert relation to array
end

ransacker :by_industry, formatter: proc{ |v|
  data = Person.in_industry(v).map(&:id)
  data = data.present? ? data : nil
} do |parent|
  parent.table[:id]
end

我從下面的文章和評論中的更正得到了這個:

http://nikhgupta.com/code/activeadmin/custom-filters-using-ransacker-in-activeadmin-interfaces/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM