一直试图从类别中提取产品,但这不是工作。当我进入
时从rails控制台 category = Category.where(id: 1)
将返回类别,但是当我输入
时 category.products
返回
`NoMethodError: undefined method `products' for #<Category::ActiveRecord_Relation`
但是当我输入
时 category = Category.first
然后做
category.products
我获得属于该类别的所有产品。我做错了什么?
答案 0 :(得分:0)
where
会返回一个集合,而first
会返回一个类别,如错误所示。
如果你Category.find(1)
而不是它的工作地点。
答案 1 :(得分:0)
第一个查询为您提供了id
匹配1
的类别集合。因为只有一条记录可能匹配此查询,所以集合中只有一个对象。但是,您无法直接在集合上调用products
。
第二个查询使用默认排序顺序为您提供在数据库中找到的第一个类别对象。由于它是活动记录实例而不是关系(集合),因此您可以在其上调用产品。
要按ID获取单个对象,请使用find_by(id: 1)
或仅find(1)
。
请仔细阅读http://guides.rubyonrails.org/active_record_querying.html了解详情。