Ruby on rails 3 has\u many返回数组而不是ActiveRecord类
我正在关注并尝试用authlogic+facebook实现同样的功能,而不是像railscast中所示的Desive+twitter 也许我对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'],
的理解有很多
仍然不太好,但在铁路司机中,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关系。它们都返回数组。很不方便!