Ruby on rails 活动记录未检索数据
一直在尝试从分类中提取产品,但它不起作用。当我进入时,从rails控制台Ruby on rails 活动记录未检索数据,ruby-on-rails,ruby,ruby-on-rails-5,Ruby On Rails,Ruby,Ruby On Rails 5,一直在尝试从分类中提取产品,但它不起作用。当我进入时,从rails控制台 category=category.where(id:1) 将返回类别,但当我键入 category.products 返回 `NoMethodError: undefined method `products' for #<Category::ActiveRecord_Relation` `NoMethodError:for#的未定义方法'products'返回一个集合,而first返回一个类别,如错误所示 如果
category=category.where(id:1)
将返回类别,但当我键入
category.products
返回
`NoMethodError: undefined method `products' for #<Category::ActiveRecord_Relation`
`NoMethodError:for#的未定义方法'products'返回一个集合,而first
返回一个类别,如错误所示
如果您选择了Category。请查找(1)
,而不是它的工作位置。第一个查询将为您提供一个类别集合,其中id
与1
匹配。因为只有一条记录可能与此查询匹配,所以集合中只有一个对象。但是,您不能直接调用集合上的产品
第二个查询使用默认排序顺序提供数据库中找到的第一个类别对象。因为它是一个活动记录实例而不是关系(集合),所以您可以对其调用产品
要按id仅获取单个对象,请使用find\u by(id:1)
或简单地使用find(1)
请仔细阅读以了解更多细节 我如何在我的控制器中使用它来检索产品category=category.find(1)
然后category.products
但是如果您没有对类别执行任何操作,您可能希望执行products=Product.joins(:category)。其中(categories:{id:1})
well类别将动态添加。因此,让我们在show controller上说,我如何使用像这样的东西`@categories=Category.find(params[:id])`我将命名您的变量@Category
,因为您只有一个,然后你可以简单地做@category.products
当我以他的方式称呼它时,我无法运行category.product.eachso如果我想在我的show controller中找到一个catefory,然后通过该类别循环获得产品,我该怎么做?