Ruby on rails 3 has\u many返回数组而不是ActiveRecord类

Ruby on rails 3 has\u many返回数组而不是ActiveRecord类,ruby-on-rails-3,has-many,railscasts,Ruby On Rails 3,Has Many,Railscasts,我正在关注并尝试用authlogic+facebook实现同样的功能,而不是像railscast中所示的Desive+twitter 也许我对的理解有很多仍然不太好,但在铁路司机中,ryan拥有in认证控制器 def create auth = request.env["rack.auth"] current_user.authentications.find_or_create_by_provider_and_uid(auth['provider'],

我正在关注并尝试用authlogic+facebook实现同样的功能,而不是像railscast中所示的Desive+twitter

也许我对
的理解有很多
仍然不太好,但在铁路司机中,ryan拥有in
认证控制器

  def create
    auth = request.env["rack.auth"]
    current_user.authentications.find_or_create_by_provider_and_uid(auth['provider'], auth['uid'])
    flash[:notice] = "Authentication successful."
    redirect_to authentications_url
  end
在我的实现中,
current\u user.authentications
返回一个数组
[]
如何调用
find\u或\u create\u by\u provider\u和\u uid

我的实现错了吗?
是否有许多
假设返回一个数组

我得到的错误是,我正在调用
nil
对象上的
find\u或\u create\u by\u provider\u和\u uid


当前用户。身份验证
很好地为零,因为用户还没有任何身份验证。

该数组实际上是一个
关联代理
实例,它将所有方法调用委托给内部对象,在
具有多个
关联的情况下,它是一个数组(另请参见)。这意味着您应该能够调用神奇的方法,如通过提供程序查找或创建,以及作用域等

我发现这个问题是因为我遇到了一个类似的问题:出于某种原因,我无法调用
ActiveRecord::Relation#klass
来查找模型类:

post.comments.klass # => NoMethodError
但是通过首先调用
relation
,您可以得到一个正常的
ActiveRecord::relation
实例:

post.comments.relation.klass # => Comment

你确定你使用的是Rails 3,还是Rails的早期版本?肯定是Rails 3。昨晚有这个问题,我想在我在家解决之前,我会在这里问一下。也许我的消息来源有问题。但是,
难道不应该让很多人带回来一个数组吗?在我看来,你所编写的代码应该可以工作。您是否已验证没有使用自己的函数(例如在用户类或相关模块中)重写身份验证关系?没有看到更多的代码,这真的是我能想到的。我理解。我要回家仔细看看。如果没有,我会尝试克隆ryans github repo来制作这一集。你知道吗?我所有的hm:t关系莫名其妙地开始返回数组,而不是今天的ActiveRecord::Relations。我已经尝试了rails 3的多个版本,并且在许多不同的模型上尝试了许多不同的hm:t关系。它们都返回数组。很不方便!