1

だから私はRoRが初めてで、select whereステートメントを実行できないようです。これらは次のクラスです。

モデル:

class List < ActiveRecord::Base  
  has_many :list_categorization
  has_many :category, :through => :list_categorization
end

class ListCategorization < ActiveRecord::Base
  attr_accessible :category_id, :list_id

  belongs_to :category
  belongs_to :list
end

class Category < ActiveRecord::Base
  attr_accessible :name

  has_many :list_categorizations
  has_many :lists, :through => :list_categorizations
end

そして、私がやろうとしているのは、特定のカテゴリのリストを選択することです。次のコードを使用して、list_controler でこれの簡略化されたバージョンを実行しようとしました。

class ListsController < ApplicationController

    @lists = List.where("category.id = ?", 2)
  end
end

そして、次のビューを使用します。

<ul class="lists">
  <%= render @lists%>
</ul>

次に、次のエラーが表示されます。

ActiveRecord::StatementInvalid in Lists#index_where

SQLite3::SQLException: そのような列はありません: category.id: SELECT "lists".* FROM "lists" WHERE (category.id = 2) ORDER BY lists.created_at DESC

私は何を間違っていますか?よろしくお願いします。

4

2 に答える 2

2

私はあなたがこのようなことをしようとしたと思います:

@lists = List.joins(:categories).where('category.id = 2')

あなたがすることができます:

@lists = Category.find(2).lists
于 2013-04-28T10:02:23.800 に答える
2
@lists = Category.find(2).lists
于 2013-04-28T10:02:27.637 に答える