rails admin has_many通过关系导致错误

时间:2015-12-01 19:03:23

标签: ruby-on-rails ruby rails-admin

我正在使用rails_admin gem作为管理界面。

我有一个 has_many到的关系,它似乎与rails admin无关。

class Company < ActiveRecord::Base
    has_many :talent_infos, class_name: 'CompanyTalentInfo'
    has_many :talents, through: :talent_infos
end

class CompanyTalentInfo < ActiveRecord::Base
    belongs_to :company
    belongs_to :talent
end

class Talent < ActiveRecord::Base
    has_many :talent_infos, class_name: 'CompanyTalentInfo'
    has_many :companies, through: :talent_infos
end

每次尝试创建新公司时都会收到错误,我的猜测是rails_admin第一次尝试检查关系并且它不接受我当前的关联。

我得到的错误是这个文件gems / rails_admin-0.7.0 / app / views / rails_admin / main / _form_filtering_multiselect.html.haml:21

21     controller.list_entries(config, :index, field.associated_collection_scope, false).map { |o| [o.send(field.associated    _object_label_method), o.send(field.associated_primary_key)] }.sort_by {|a| [selected_ids.index(a[1]) || selected_ids.si    ze, i+=1] }

我收到此错误

 undefined method `klass' for nil:NilClass`

任何人都可以帮我解决这个问题,如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

也许是迟到的回复,但您能否将数据库架构的相关部分与以下内容进行比较,让我知道其中的区别?我相信关系设置正确,这应该是问题。

create_table "companies", force: :cascade do |t|
  t.string "name"
end

create_table "company_talent_infos", force: :cascade do |t|
  t.string  "metadata"
  t.integer "company_id"
  t.integer "talent_id"
end

create_table "talents", force: :cascade do |t|
  t.string "name"
end