Domanda

Ho un utente modello (: nome,: password: e-mail), e il modello di evento (: nome,: ecc) e il modello di interesse (: nome) [> tutto singolare <]

Poi ho creato due uniscono le tabelle -> UsersInterests e EventsInterests; ciascuno non contiene una chiave primaria e solo composto user_id / interest_id e event_id / interest_id rispettivamente. [> Plurale <]

I miei modelli utilizzano il annidata ha molti attraverso Plugin

user.rb => has_many :users_interests
 has_many :interests, :through => :users_interests
 has_many :events_interests, :through => :interests
 has_many :events, :through => :events_interests

event.rb => has_many :events_interests
  has_many :interests, :through => :events_interests
     has_many :users_interests, :through => :interests
  has_many :users, :through => :users_interests

interest.rb => has_and_belongs_to_many :users
               has_and_belongs_to_many :events

events_interests.rb => belongs_to :interests
                    belongs_to :events
users_interests.rb => belongs_to :users
                   belongs_to :interests

Whew..ok così ho voluto creato un named_scope di che trovare tutti gli eventi che interessano la quota con un particolare utente. Ecco il codice che qualcuno mi ha aiutato con.

named_scope :shares_interest_with_users, lambda {|user|
{ :joins => :users_interests,
  :conditions => {:users_interests => {:user_id => user}}
   }}

Quando eseguo dal controller =>

@user = User.find(1) 
@events = Event.shares_interest_with_user(@user)

ottengo l'errore:

uninitialized constant Event::EventsInterest

Qualcuno può vedere quello che ho fatto un casino?

È stato utile?

Soluzione

Si deve essere chiamato qualcosa di sbagliato lungo la strada. A colpo d'occhio direi che si dispone di un file o una classe denominata in modo non corretto. Ricordate i nomi di modello deve essere sempre singolare, sia nei nomi di file e di classe o Rails altro non farà la connessione. Un'altra fonte del problema è che gli argomenti a belongs_to devono essere singolare. Anche se avessi avuto le cose per bene, il rapporto HABTM negli interessi con gli utenti avrebbe gettato un errore quando è stato eseguito l'ambito di nome.

sono stato in grado di risolvere l'errore con i seguenti modelli.

user.rb

class User < ActiveRecord::Base
has_many :users_interests
  has_many :interests, :through => :users_interests
  has_many :events_interests, :through => :interests
  has_many :events, :through => :events_interests
end

users_interest.rb

class UsersInterest < ActiveRecord::Base
  belongs_to :user
  belongs_to :interest
end

interest.rb

class Interest < ActiveRecord::Base 
  has_many :users,:through => :users_interests
  has_many :users_interests
  has_many :events_interests
  has_many :events, :through => :events_interests
end

** events_interest.rb

class EventsInterest <ActiveRecord::Base
  belongs_to :interest
  belongs_to :event
end

event.rb

class Event <ActiveRecord::Base 
  has_many :events_interests
  has_many :interests, :through => :events_interests
  has_many :users_interests, :through => :interests
  has_many :users, :through => :users_interests


  named_scope :shares_interest_with_users, lambda {|user|
    { :joins => :users_interests,
      :conditions => {:users_interests => {:user_id => user}}
    }
  }

end
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top