2012-04-13 4 views
1

Ich habe ein Modell "Trip" und ich möchte in der Lage sein, nur bestimmte Benutzer in "Gruppe" erstellen "Kommentare".Erstellen einer neuen Beziehung, so dass nur bestimmte Benutzer ein Dokument bearbeiten können

Als ich das Trip-Modell zum ersten Mal erstellte, ließ ich es so einstellen, dass nur ein Benutzer es bearbeiten kann. Nun möchte ich andere Benutzer einladen können, sie ebenfalls zu bearbeiten. Der Teil, der mich (Wortspiel beabsichtigt) im Moment stolpert ist, dass ich sowohl trip belong_to :user (der Benutzer, der es erstellt hat) und trip has_many :users, :through => :group.

Fragen:

  1. Ist das pro Rails-Konvention erlaubt?
  2. Basierend auf meinem Modell wird die Gruppe sowohl user_id als auch trip_id haben. Ist das der beste Weg, dieses Problem anzugehen? Das heißt, sollte es einen neuen Datensatz in der Datenbank für jeden Benutzer geben, den ich in die Gruppe einlade?

Dank.

user.rb

class User < ActiveRecord::Base 
    has_many :trips, :through => :groups 
    has_many :trips, :dependent => :destroy 
    has_many :groups 
    has_many :comments, :dependent => :destroy 
end 

group.rb

class Group < ActiveRecord::Base 
    belongs_to :trip 
    belongs_to :user 
end 

trip.rb

class Trip < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :traveldeal 
    has_many :groups 
    has_many :users, :through => :groups 
end 

comment.rb

class Comment < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :commentable, :polymorphic => true 
end 

Ansicht (show.html.erb)

<% unless @user.trips.empty? %> 
    <% @user.trips.each do |trip| %> 
    <!-- Content here --> 
    <% end %> 
<% end %> 
+1

Probieren Sie ': through =>: groups' anstelle von': group' – niiru

+0

Meine Ansicht zeigt den Fehler nicht mehr an, aber es werden keine Fehler angezeigt, die dem Benutzer gehören. Korrektur zum Posten gemacht. – Huy

Antwort

0

Normale Rails Konvention würde das Group Modell etwas wie TripPerson zu spezifizieren die beiden Tabellen zu nennen gewesen, dass es kommt, aber diese kommen Tabellen ein natürliches Nebenprodukt der relationalen sind Datenbanken. Sie müssen fortfahren, ein neues Group Objekt für jede eingeladene Person zu erstellen.

+0

Danke, Kyle. Ich ging zurück und änderte mein "Gruppen" -Modell in "TripUser" – Huy

Verwandte Themen