2017-07-17 2 views
0

Comment puis-je résoudre ce message d'erreur? J'essaye de créer un nouvel objet et je reçois le message d'erreur ci-dessous.Message d'erreur ActiveAdmin HMABTM

Message d'erreur:unknown attribute 'w_artisan_id' for ArtisanColour.

Si je retire collection_colour_ids du formulaire ActiveAdmin, il n'y a pas plus d'erreur, donc je suis assez positif, il a quelque chose à voir avec le modèle joignant j'ai créé appel artisan_colour

Le code est ci-dessous.

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 

Modèles:

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 

Schéma:

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 

Répondre

1

La migration de base de données est incorrecte.

il devrait être

t.integer "w_artisan_id" 

pas

t.integer "w_artisans_id" 

le champ de clé étrangère est singulier par défaut.