如何循环浏览已升级的帖子。我的帖子模型中有一个可以访问的方法。在这种情况下,我怎么称呼它。例如,这是我的帖子模型的方法。
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 %>
答案 0 :(得分:0)
如果您迫切需要使用升级版,可以尝试
Post.all.find_all(&:promoted?)
是
的缩写Post.all.find_all do |post|
post.promoted?
end
这是一种n + 1查询,您可以在使用时选择它
Post.joins :subscriptions
是失败的。