Rails - 被视为Activerecord :: Module的类

时间:2016-03-24 15:26:11

标签: ruby-on-rails activerecord

我有一个班级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;建立连接):类

有人可以帮我解决此错误吗?

1 个答案:

答案 0 :(得分:3)

你可以说::Type.dessert让Ruby混淆。

但在我看来,通过将模型重命名为MealType,您将省去很多麻烦。无论如何&#34; type&#34;如此通用它不是一个非常有用的名称。您最终可能会使用UserTypeMenuTypeRestaurantTypeSubscriptionType以及其他内容。它与名为Group的模型一样糟糕。 。 。