我有一个班级Meal
,与Type
有关系
我创建了一个范围
在后者喜欢:
class Type < ActiveRecord::Base
has_many :meals
scope :dessert, -> { where(name: "dessert") }
end
在膳食中,我试图获得有甜点的饭菜类型:
class Meal < ActiveRecord::Base
belongs_to :type
scope :dessert, -> { joins(:type).merge(Type.dessert) }
end
当我做Type.dessert
时,我得到了正确的结果
但是当我输入Meal.dessert
时,控制台会给我这个错误:
NoMethodError:未定义的方法`甜点&#39; for ActiveRecord :: Type:Module
对我来说,这个错误至少应该说Type是一个类,好像我输入了一个未存在的函数:
NoMethodError:未定义的方法`toto&#39; for Type(电话 &#39; Type.connection&#39;建立连接):类
有人可以帮我解决此错误吗?
答案 0 :(得分:3)
你可以说::Type.dessert
让Ruby混淆。
但在我看来,通过将模型重命名为MealType
,您将省去很多麻烦。无论如何&#34; type&#34;如此通用它不是一个非常有用的名称。您最终可能会使用UserType
,MenuType
,RestaurantType
,SubscriptionType
以及其他内容。它与名为Group
的模型一样糟糕。 。 。