2017-07-17 8 views
0

どのようにこのエラーメッセージを解決できますか?新しいオブジェクトを作成しようとしていますが、以下のエラーメッセージが表示されます。ActiveAdmin HMABTMエラーメッセージ

エラーメッセージ:unknown attribute 'w_artisan_id' for ArtisanColour.

私はActiveAdminフォームからcollection_colour_idsを削除した場合には、もはやエラーがあるので、私はそれが私がコールartisan_colour作成した参加モデルとは何かを持っているかなりポジティブです

コードは以下のとおりです。

ActiveAdmin.register WArtisan do 

    # See permitted parameters documentation: 
    # https://github.com/activeadmin/activeadmin/blob/master/docs/2-resource-customization.md#setting-up-strong-parameters 
    # 
    permit_params :name, collection_colour_ids: [] 
    # 


    form do |f| 
     f.semantic_errors *f.object.errors.keys 
     f.input :name 
     f.input :collection_colour_ids, multiple: true, required: true, :label => 'Colours', :as => :check_boxes, :collection => CollectionColour.all.collect {|u| [u.colour_name, u.id]} 


     f.actions 
    end 

    end 

モデル:

class ArtisanColour < ApplicationRecord 
    belongs_to :collection_colour 
    belongs_to :w_artisan 
    accepts_nested_attributes_for :collection_colour 
    accepts_nested_attributes_for :w_artisan 
end 


class CollectionColour < ApplicationRecord 
    has_many :artisan_colours 
    has_many :w_artisans, through: :artisan_colours 
    accepts_nested_attributes_for :w_artisans 
    accepts_nested_attributes_for :artisan_colours 
end 


class WArtisan < ApplicationRecord 
    has_many :artisan_colours 
    has_many :collection_colours, through: :artisan_colours 
    accepts_nested_attributes_for :collection_colours 
    accepts_nested_attributes_for :artisan_colours 

    def self.listing 
     order(created_at: :desc) 
    end 
end 

スキーマ:

create_table "artisan_colours", force: :cascade do |t| 
    t.integer "collection_colours_id" 
    t.integer "w_artisans_id" 
    t.datetime "created_at",   null: false 
    t.datetime "updated_at",   null: false 
    t.index ["collection_colours_id"], name: "index_artisan_colours_on_collection_colours_id" 
    t.index ["w_artisans_id"], name: "index_artisan_colours_on_w_artisans_id" 
    end 

答えて

1

データベースの移行が正しくありません。

それは

t.integer "w_artisan_id" 

ない

t.integer "w_artisans_id" 

外部キーフィールドは、デフォルトでは単数形であるべきです。