に協会を通じて私がアクセスできるのparamsを使用してコレクションを絞り込むするコレクション
class PostsController < ApplicationController
load_and_authorize_resource
def index
if params[:event_id] then
@event = Event.find(params[:event_id])
if params[:category_id] then
@category = Category.find(params[:category_id])
@posts = Post.where(:event_id => @event.id,
:product => {:category_id => @category.id })
end
end
end
を連想のparamsを使用すると、私はエラー
No attribute named 'category_id' exists for table 'product'
を与えるが、列「CATEGORY_ID」 'はテーブルに存在しません製品'。このエラーを検索してもまだ役に立たないものは表示されていません。私はまた、属性をアクセス可能にするために 'デリゲート'を使用しようとしましたが、それもうまくいきませんでした。私は困惑している。
私は修正 ':製品' にここ
はスキーマ
create_table "posts", :force => true do |t|
t.float "quantity"
t.datetime "deadline"
t.integer "product_id"
t.integer "event_id"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "products", :force => true do |t|
t.string "title"
t.text "desc"
t.text "ingredients"
t.float "deposit"
t.float "cost"
t.string "units"
t.float "quantity"
t.float "deadline_hours"
t.boolean "presell_option"
t.integer "user_id"
t.integer "category_id"
t.integer "club_id"
t.datetime "created_at"
t.datetime "updated_at"
end
編集です ':製品の私は、これはさらに私を困惑
SQLite3::SQLException: no such column: products.category_id: SELECT "posts".* FROM "posts" WHERE (("products"."category_id" = 2 AND "posts"."event_id" = 10))
この関連のエラーを取得スキーマは商品表にcategory_idを持っていると言います
私はこれを変更しようとしました、私の編集、エラーのアイデアを参照してください?私に含める必要があるものは他にありますか? – thejonster
私の答えは一見して更新されました。 –
はい、うまくいきます、ありがとうございます。私は、ジョインが何をし、どこでそれを使う必要があるのかを学ばなければならないだろうと思う。 – thejonster