2010-09-29 7 views
0

je le modèle utilisateur suivant:Définir un attribut dans une jointure modèle

class User < ActiveRecord::Base 

    has_many :competences 
    has_many :skills, :through => :competences 

    accepts_nested_attributes_for :skills 
end 

et le modèle des compétences suivantes:

class Skill < ActiveRecord::Base 
    has_many :competences 
    has_many :users, :through => :competences 
end 

Le modèle de compétence a un attribut « type » et il est le rejoindre le modèle. Dans le formulaire imbriqué, comment puis-je définir l'attribut 'type' pendant que je sauvegarde les compétences soumises? Voici la emboîtées:

<% f.fields_for :skills do |s| %> 
    <%= s.text_field :name %> 
<% end %> 

Répondre

1

Vous devez créer l'objet de compétence spécifique - vous ne pouvez pas créer implicitement (à la HABTM) et les attributs également mis sur elle. Votre modèle d'utilisateur doit accepter les attributs imbriqués pour les compétences, qui doivent accepter les attributs imbriqués pour les compétences. Quelque chose comme ça devrait vous mettre sur la bonne voie:

<% f.fields_for :competences do |c| %> 
    <%= c.text_field :type %> 
    <% c.fields_for :skills do |s| %> 
    <%= s.text_field :name %> 
    <% end %> 
<% end %> 
Questions connexes