Я хочу сузить коллекцию, используя параметры, доступные через ассоциацию
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
Дает мне ошибку
No attribute named 'category_id' exists for table 'product'
Но в таблице '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
Редактировать:
Когда я исправляю ': product' в ': products', я получаю эту связанную ошибку
SQLite3::SQLException: no such column: products.category_id: SELECT "posts".* FROM "posts" WHERE (("products"."category_id" = 2 AND "posts"."event_id" = 10))
Это озадачивает меня еще больше, схема говорит, что у меня есть category_id в таблице продуктов