Переделывать этот цикл пользователем? - PullRequest
0 голосов
/ 21 мая 2010

Мне интересно, есть ли лучшая практика для того, чего я пытаюсь достичь ...

Сначала у нас есть модели категорий, категории, сообщения has_many.

Теперь допустим, пользователи добавляют сообщения.


Теперь у меня есть страница, на которой я хочу отображать только сообщения текущего пользователя по категории.


Допустим, у нас есть следующие категории: A, B и C

Пользователь 1, опубликовал в категориях A и B.


На мой взгляд, у меня есть что-то вроде:

<% @categories.select {|cat| cat.posts.count > 0}.each do |category| %>
  <%= category.name %><br/>
  <% category.posts.select {|post| post.user == current_user}.each do |post| %>
    <%= post.content %><br/>
  <% end %>
<% end %>

По большей части его почти нет. Проблема в том, что он по-прежнему будет отображать пустую категорию, если в нее вообще были введены какие-либо сообщения (даже если текущий пользователь не вводил сообщения в эту категорию.

Итак, вопрос сводится к:

Как сделать в следующем цикле только количество сообщений в категории от текущего пользователя?

0} .each do | категория | %>

Лучший, Эллиот

1 Ответ

1 голос
/ 21 мая 2010

Я бы сделал что-то вроде:

class User < ActiveRecord::Base
   has_many :posts
   has_many :categories, :through => :posts, :uniq => true
end

class Post < ActiveRecord::Base
   belongs_to :user
end

class Category < ActiveRecord::Base
   has_many :posts
end

# controller
@categories = current_user.categories

# view
<% @categories.each do |category| %> 
  <%= category.name %><br/> 
  <% category.posts.select {|post| post.user==current_user}.each do |post| %> 
    <%= post.content %><br/> 
  <% end %> 
<% end %> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...