2010-08-05 5 views
0
class Book < ActiveRecord::Base 
    has_and_belongs_to_many :categories 
    has_and_belongs_to_many :users 
end 


class Category < ActiveRecord::Base 
    has_and_belongs_to_many :books 
end 

class User < ActiveRecord::Base 
    has_and_belongs_to_many :books 
end 

Ci-dessus, comment j'ai déclaré les relations entre mes modèles. Dans mon contrôleur de livre et mon formulaire, je peux facilement créer un livre et associer ce livre à une catégorie. Mais comment associer ce livre à un utilisateur en temps de création? Y a-t-il une partie de rails automagique qui sera supposée gérer cela pour moi ou devrais-je faire un type transactionnel pour mettre à jour la table de jointure pour associer un livre à un utilisateur.plusieurs relations HABTM dans les rails

Répondre

0

Vous pouvez instancier un nouveau livre comme ceci:

class BooksController < ApplicationController 
    def create 
    @book = @current_user.books.build(params[:book]) 
    ... 
    end 
end 

Ce oscilloscopes le livre à @current_user; Lorsque vous enregistrez @book, @book.user_id sera défini sur @current_user.id. Comment vous peupler @current_user est à vous.

+0

J'ai essayé ceci, il enregistre la table de livres, la table de jointure (books_categories), mais aucune entrée n'est faite à la table books_users. J'ai rempli le @current_user en fonction de l'ID de session que je stocke lorsque l'utilisateur se connecte. – Dhana

+0

L'a corrigé - pour enregistrer avec des données correctes, appelez @ current_user.save au lieu de @ book.save – Dhana

Questions connexes