Вопрос

У меня есть модель пользователя (: name,: пароль,: электронная почта) и модель событий (: name,: etc) и процентная модель (: имя) [> все единственное число <

Затем я создал два таблица присоединения -> пользователей Interneests и Eventsinterests; Каждый не содержит первичный ключ и только состоит из только user_id / dient_id и event_id / dient_id соответственно. [> множественное число <

Мои модели используют Вложенный имеет много через плагин

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, поэтому я хотел создать Named_scope, которые находят все события, которые разделяют интерес с определенным пользователем. Вот какой-то код кто-то помог мне.

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

Когда я бегу от контроллера =>

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

Я получаю ошибку:

uninitialized constant Event::EventsInterest

Кто-нибудь может увидеть, что я испортил?

Это было полезно?

Решение

Вы, должно быть, по имени что-то не так по пути. Слым, скажу, что у вас есть файл или класс, указанный неправильно. Помните названия модели ДОЛЖЕН Всегда быть единственным, как в файлах, так и в названиях класса, либо в Rails не приведет к соединению. Другой источник вашей проблемы состоит в том, что аргументы принадлежат_до также должны быть единственными. Даже если у вас есть правильные вещи, отношения HABTM в интересах с пользователями выбросили ошибку при запуске именованных областей.

Я смог решить вашу ошибку со следующими моделями.

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

Интерес

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

** События_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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top