Я хочу, чтобы текущий пользователь читал и покупал сообщения в клубах, членом которых он является.Я хотел бы сделать что-то вроде следующего, но ничего, что я прочитал или попробовал, еще не щелкнуло.Я буду использовать много вложенных коллекций этого типа, я застрял! Модели
class User < ActiveRecord::Base
has_many :memberships
has_many :clubs, :through => :memberships
has_many :products
class Membership < ActiveRecord::Base
belongs_to :user
belongs_to :club
class Club < ActiveRecord::Base
has_many :memberships
has_many :users, :through => :memberships
has_many :events
class Event < ActiveRecord::Base
belongs_to :club
class Product < ActiveRecord::Base
belongs_to :user
has_many :posts
class Post < ActiveRecord::Base
belongs_to :product
belongs_to :event
Контроллер сообщений
def index
@user = current_user
@posts_in_my_clubs = @user.memberships.collect { |a| a.products.posts}
posts / index.html.erb
@posts_in_my_clubs do |post|
Дает мне ошибку:
неопределенный метод `memberships 'для nil: NilClass
, который меня не удивляет.Дополнительно я хочу иметь возможность выбирать только те сообщения, которые будут только на определенном мероприятии и т. Д.
Краткое изложение моделей: Клубы имеют много событий и пользователей.У пользователей есть много Продуктов, в которые они могут Размещать количество для продажи в разные Даты Событий.Только пользователи, которые являются членами клуба, могут публиковать или просматривать сообщения в клубе.
Вместо того, чтобы повторять данные в моделях, я сделал ассоциации, которые, кажется, делают данные недоступными для создания коллекций в ActiveRecord.Я нашел в своем исследовании Модели объединения ассоциаций и Интеллектуальное сопоставление ассоциации с мета-местоположением.Эти ссылки заставляют меня чувствовать, что я приближаюсь.
Редактировать
Я вошел в систему и могу получить доступ ко всем нужным мне данным, пока я не пытаюсь сделатьКоллекция, как это.Например, я могу проверить, являюсь ли я членом клуба, по
def member?(club)
return !!self.clubs.find(club)
Я нуб, поэтому я должен упустить что-то очевидное здесь.Нужно ли разбивать мою коллекцию на шаги?т.е. собирать пользовательские клубы, собирать пользовательские продукты клубов, собирать сообщения о пользовательских клубных продуктах ... спасибо
Logger.info
@user = current_user
logger.info @user
logger.info 'super secret message'
# @club_posts = @user.memberships.collect {|a| a.product.posts}
возвращает
#<User:0x5b202a0>
super secret message
Когда я удаляюкомментарий, я снова получаю ноль ошибок, для «продукта» сейчас (прогресс!).Я уверен, что думал, что я вошел в систему раньше .. хотя было уже поздно