2016-03-24 24 views
0

Bir sınıf olması Meal hangi sahip ilişki onun Type ben bu madde gibi bir kapsam oluşturulan :Raylar - ActiveRecord gibi muamele Sınıf :: Modül

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

ve meal i çalışıyorum sadece Type.dessert yaptığınızda

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

, doğru bir sonuç olsun Ama Meal.dessert yazdığınızda, konsol bana bu e verir: bir tatlı türü olan yemek almak rror:

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

herkes bu hatayı gidermek için bana yardımcı olabilir: Benim için

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

, bu hata en azından ben bir unexisting işlevi yazın sanki o Tipi Sınıf demek gerekir?

cevap

3

Ruby'yi kesin olarak karıştırmamak için ::Type.dessert diyebilirsiniz.

Ama bence, modelinizi MealType'a yeniden adlandırarak kendinize çok fazla sorun yaşatacaksınız. Neyse "türü" çok genel bir çok yararlı bir isim değil. Muhtemelen UserType, MenuType, RestaurantType, SubscriptionType, ve açıp açabilirsiniz. Group adlı bir modele sahip olmak kadar kötü. . . .

+0

Teşekkürler, bunun benim sorunumun sebebi olabileceğini düşünmüştüm, fakat bunu kullanarak çok fazla kodum var. Sanırım kaderimi kabul ediyorum – Shrolox

İlgili konular