Estoy siguiendo OmniAuth railscasts y trato de implementar lo mismo con authlogic + facebook en lugar de idear + twitter como se muestra en la transmisión de rieles.has_many devuelve una matriz en lugar de la clase ActiveRecord
Tal vez mi comprensión de has_many
todavía no es buena, pero en los Railscasts Ryan tiene la following code en AuthenticationsController
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
En mi aplicación current_user.authentications
devuelve una matriz []
¿Cómo puedo llamar find_or_create_by_provider_and_uid
en una matriz?
¿Está mal mi implementación? ¿No se supone que has_many
devuelve una matriz?
Error que recibo es que estoy llamando al find_or_create_by_provider_and_uid
en un objeto nil
.
current_user.authentications
no está nada bien porque el usuario aún no tiene ninguna autenticación.
¿Está seguro de que está utilizando Rails 3, o está utilizando una versión anterior de Rails? –
positivo sobre esto siendo raíles 3. Tuve este problema anoche, pensé que iba a preguntar aquí antes de abordarlo de nuevo en mi casa. Quizás hay algo mal en mi fuente. pero no debería 'has_many' traer de vuelta una matriz? – Omnipresent
Me parece que lo que has codificado debería funcionar. ¿Ha verificado que no está anulando la relación de autenticación con una función propia (por ejemplo, en la clase de usuario o en un módulo relacionado)? Sin ver más código, esto es realmente todo lo que puedo pensar. –