Constante de nível superior referenciada por aviso para o modelo Mongoid

9

Eu tenho o seguinte modelo mongóide que herda do modelo de entrada:

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

Quando tento referenciá-lo, recebo o seguinte aviso:

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

Em vez de fazer referência ao meu modelo, ele faz referência ao Twitter Constante de Nível Superior que é definido por uma preciosidade.

O que posso fazer para corrigir isso? Não quero usar outro nome para minha turma.

    
por Mindbreaker 13.08.2012 в 12:15
fonte

1 resposta

5

aqui é a solução: link

Acabei de adicionar require_dependency 'entry/twitter' a todos os arquivos que fazem referência a Entry::Twitter para evitar esse problema, e agora tudo funciona bem.

    
por Betty St 18.10.2012 / 19:40
fonte