2012-08-13 10 views
9

tengo el siguiente modelo MongoId que hereda de la modelo de entrada:Top constante el nivel de referencia de advertencia para el modelo Mongoid

class Entry::Twitter < Entry 

    field :retweet_count, :type => Integer, :default => 0 
    field :retweeted, :type => Boolean, :default => false 
    field :favorited, :type => Boolean, :default => false 

    # in_reply_to_screen_name, in_reply_to_status_id_str, in_reply_to_user_id_str 
    field :reply, :type => Hash 

    field :from, :type => Hash # user: id_str, name, screen_name 
    field :time, :type => Time # created_at 
    field :data, :type => Hash # entities (hashtags and user_mentions) 
    field :assets, :type => Hash # urls from original entities 
    field :service, :type => String, :default => "twitter" 

    attr_accessible :assets 

    # validations 
    validates_presence_of :retweet_count, :from, :time, :data 

    # override set_service cause of https://github.com/sferik/twitter/issues/303 

    def set_service 
    self.service = "twitter" 
    end 
end 

Cuando intento hacer referencia a ella me sale el siguiente aviso:

ruby-1.9.3-p125 :001 > Entry::Twitter 
(irb):1: warning: toplevel constant Twitter referenced by Entry::Twitter 
=> Twitter 

En lugar de hacer referencia a mi modelo, hace referencia al Twitter constante de nivel superior que está definido por una gema.

¿Qué puedo hacer para solucionar esto? No quiero usar otro nombre para mi clase.

+0

¿Qué gema quiere decir exaclty? este: https://github.com/sferik/twitter? Tengo un problema similar y un error de carga. – Mattherick

+0

Su problema está relacionado con la forma en que Ruby maneja el alcance. Aquí hay una descripción bastante buena de lo que está sucediendo: http://stackoverflow.com/a/6282245/279024 – rubiii

+0

@rubiii Ya lo he visto. Pero no sé cómo aplicar esto a mi problema específico. – Mindbreaker

Respuesta

5

Aquí está la solución: https://github.com/rails/rails/issues/6931

acabo añade require_dependency 'entry/twitter' a todos los archivos que hace referencia a Entry::Twitter para evitar este problema, y ​​funciona bien ahora.

+0

Thx, esto es lo que necesito. – Mindbreaker

Cuestiones relacionadas