问题显示在其类别列表中具有特定类别的所有文章?

时间:2016-11-21 14:42:10

标签: ruby-on-rails ruby-on-rails-4

显示所有在其类别列表中具有特定类别的文章的问题?

Articles
has_and_belongs_to_many Categories

Categories
has_and_belongs_to_many Articles

class CreateJoinTableArticleCategory < ActiveRecord::Migration
  def change
    create_join_table :articles, :categories do |t|
      # t.index [:article_id, :category_id]
      # t.index [:category_id, :article_id]
    end
  end
end

模型和迁移很好,种子是rails控制台中的精细信息很好但在控制器中我有问题显示我从URL获得的某个类别的所有文章:

    class CategoriesController < ApplicationController

      def show
        @user = current_user
        @categories = Category.all
        @category = Category.friendly.find(params[:slug])

      #@a = Article.where(category_id: @category, published: true)
      #@a = Article.left_outer_joins(:categories).where("categories.category_id = @category")
      #@a = Article.joins("LEFT JOIN articles_categories ON category.id = articles_categories.id")
      #@a = Article.includes(:categories).where(@category)


        @q = Question.where(category_id: @category, published: true)
        @articles = (@q + @a).sort_by(&:created_at).reverse.paginate(page: params[:page], per_page: 4)
      end

    end

3 个答案:

答案 0 :(得分:0)

我不熟悉&#34;。友好&#34; (你为什么要使用它?),但你确定你只获得1个类别吗?如果是这样,你的第一个@a应该工作或更简单的版本

clang-tidy test/src/inv.cpp -config ''

你是否尝试过没有@q来测试它。我看到问题的唯一来源。

PS:您的代码会遇到很大的性能问题。首先,您要加载所有类别,然后加载1类别的所有文章和问题,按Ruby排序并完全禁用分页的优势。

答案 1 :(得分:0)

显然,我不知道您的数据的确切结构如何,但这可以在稍微改变以适应您的需求时起作用。

Articles.includes(:categories).where('category.name = ?', 'category_name').references(:categories)

答案 2 :(得分:0)

试试这个:

DECLARE
  src_lob  BFILE := BFILENAME('MY_DIR', '/tmp/me.gif');
  dest_lob BLOB;
BEGIN
  INSERT INTO lob_table VALUES(2, EMPTY_BLOB())
     RETURNING doc INTO dest_lob;

  DBMS_LOB.OPEN(src_lob, DBMS_LOB.LOB_READONLY);
  DBMS_LOB.LoadFromFile( DEST_LOB => dest_lob,
                         SRC_LOB  => src_lob,
                         AMOUNT   => DBMS_LOB.GETLENGTH(src_lob) );
  DBMS_LOB.CLOSE(src_lob);

  COMMIT;
END;

已发布在文章模型中创建的范围

在文章模型中创建范围:

@category = Category.friendly.find(params[:slug])
@category.articles.published