相关疑难解决方法(0)

Mongoid模型警告引用的顶级常量

我有以下mongoid模型继承自Entry模型:

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, …
Run Code Online (Sandbox Code Playgroud)

ruby mongoid ruby-on-rails-3

9
推荐指数
1
解决办法
1349
查看次数

ruby认为即使我指定了完整的命名空间,我也引用了顶级常量

在我的应用程序中,我有

class User
  include User::Foo
end
Run Code Online (Sandbox Code Playgroud)

User::Foo 在app/models/user/foo.rb中定义

现在我正在使用一个定义自己的Foo类的库.我收到这个错误:

警告:toplevel User :: Foo引用的常量Foo

User仅指Foo完整路径User::Foo,并且Foo从不实际引用Foo.

这是怎么回事?

更新:记得以前我遇到过同样的问题,在问题1中看到:如何在ruby中引用子模块的"完整路径"?

ruby

6
推荐指数
1
解决办法
2773
查看次数

如何在ruby中引用子模块的"完整路径"?

在我的应用程序中,我有

VeryUniqueModule::Foo
# and…
VeryUniqueModule::Bar
Run Code Online (Sandbox Code Playgroud)

Foo并且Bar每个都是为不同的服务.我的应用程序的一部分必须动态地确定要引用的模块,它可以这样做:

def service_api
  # @relevant_object.service is a string that is either 'Foo' or 'Bar'
  VeryUniqueModule.const_get(@relevant_object.service)
end
Run Code Online (Sandbox Code Playgroud)

稍后会详细介绍.

我刚刚更新了一个库,现在它有自己的顶级Foo类(这是一个糟糕的设计).现在,当我尝试调用时@relevant_object.service_api::A_CONSTANT,我的应用程序抱怨图书馆 Foo没有A_CONSTANT.

回到service_api上面 - 我以为那const_get是回归班级本身.事实上,我知道它是.如果我在irb所有内容中按照预期启动它- 返回值是类本身,我可以调用类中的东西.所以…

  1. 首先如何存在名称空间冲突?我正在寻找返回A_CONSTANTClass对象service_api,而不是我正在使用的字符串eval或类似的那些时髦的东西 - 应该没有任何命名空间问题,我直接指的是一个对象!
  2. 如果这确实是一个问题,我service_api该如何修复以便它将返回,嗯,"完整路径"?

ruby namespaces module

5
推荐指数
1
解决办法
1176
查看次数

标签 统计

ruby ×3

module ×1

mongoid ×1

namespaces ×1

ruby-on-rails-3 ×1