Перебирайте посты, которые продвигают - PullRequest
0 голосов
/ 09 июня 2019

Как перебрать пост, который находится на повышении.У меня есть метод в моей почтовой модели, к которому я могу получить доступ.Как бы я назвал это в этом случае.Например, вот мои методы моей почтовой модели.

class Post < ApplicationRecord
def promoted?
    subscriptions.present?
  end

  def self.promoted_posts
    Post.joins(:subscriptions).where(:subscriptions => {:is_active => true})
  end

  def self.not_promoted_posts
    Post.left_outer_joins(:subscriptions).where(:subscriptions => {:post_id => nil})
  end

  def self.ordered_posts
    Post.promoted_posts + Post.not_promoted_posts
  end
end

Вот мой взгляд.Я хотел бы пройтись по всем постам, которые продвигаются, какой метод "продвигать def?"в моей модели

<% @posts.take(6).each do |post| %>
      <div class="col-xs-6 col-sm-6 col-md-6 col-lg-4">
        <div class="featured-box">
          <figure>
            <%= link_to image_tag(post.images.first, class: 'img-fluid'), post %>
          </figure>
          <div class="feature-content">
            <div class="product">
              <p><%= post.category.name %> / <%= post.subcategory.name %></p>
            </div>
            <h4><%= link_to post.title, post %></h4>
            <ul class="address">
              <li>
                Ad#: <%= post.ad_number %>
              </li>
              <li>
                posted <%= time_ago_in_words(post.created_at) %> ago
              </li>
              <li>
                <%= post.state%> , <%= post.city.downcase %>
              </li>
            </ul>
            <div class="listing-bottom">
              <h3 class="price float-left">$<%= post.price%></h3>
              <%= link_to 'Feature Ad', post, class: 'btn-verified float-right', style: 'color: red;' %>
            </div>
          </div>
        </div>
      </div>
      <% end %>

1 Ответ

0 голосов
/ 09 июня 2019

Если вы отчаянно нуждаетесь в повышении, вы можете попробовать

Post.all.find_all(&:promoted?)

, что является кратким обозначением

Post.all.find_all do |post|
    post.promoted?
end

что-то вроде n + 1 запроса и выбор его, в то время как вы можете просто использовать

Post.joins :subscriptions

- это ошибка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...