2016-03-24 7 views
0

私はそのType との関係として、私はスコープ後者のようで 作成したクラスMealありますRailsの - のActiveRecordとして扱わクラス::モジュール

class Type < ActiveRecord::Base 
    has_many :meals 
    scope :dessert, -> { where(name: "dessert") } 
end 

と食事中に私がしようとしているが私はちょうどType.dessertを行うと

class Meal < ActiveRecord::Base 
    belongs_to :type 
    scope :dessert, -> { joins(:type).merge(Type.dessert) } 
end 

が、私は右の結果 を得る。しかし、私はMeal.dessert入力すると、コンソールが私にこの電子を与える:デザートの種類を持って食事を取得rror:私にとって

NoMethodError: undefined method `dessert' for ActiveRecord::Type:Module

、このエラーは、少なくとも私はunexisting機能を入力するかのようにその型がクラスであると言うべきである。

NoMethodError: undefined method `toto' for Type (call 'Type.connection' to establish a connection):Class

誰も私がこのエラーを解決するのに役立つことはできますか?

答えて

3

::Type.dessertとすれば、Rubyの混乱を避けることができます。

私の意見では、モデルの名前をMealTypeに変更することで、多くのトラブルを回避できます。とにかく "タイプ"は非常に一般的なので非常に有用な名前ではありません。おそらくUserType,MenuType,RestaurantType,SubscriptionTypeなどと続きます。それはGroupというモデルを持つほど悪いです。 。 。 。

+0

ありがとう、私はこれが私の問題の原因かもしれないと思っていましたが、私はこれを使って多くのコードを持っています。私はただ私の運命を受け入れるだろうと思う – Shrolox

関連する問題