Buenos dias para los que no comieron, y tardes para los que sí :) A ver, yo creo que hay algo que se me escapa. Tengo este codigo:
<% if post.usuario_id == session[:usuario_id] %>
<td><%= link_to 'Editar', {:action => 'edit', :id => post.id} %></td>
<td><%= link_to 'Borrar', post, :confirm => 'Seguro?', :method => :delete %></td>
<% end %>
Con esto, los posts tienen un parametro que es usuario_id y al ser éste igual que la id del usuario, entonces, ese usuario logeado podrá editar sus comentarios. He buscado un montón sobre como podría hacer para relacionar ese campo usuario_id de los posts para que no lo tenga que poner manualmente en el formulario de crear un nuevo comentario, pero no encontré nada(o al menos eso creo). Asi que dije "bueno, si asi no lo consigo, que parece un poco complicado, pruebo otra forma". Lo siguiente es:
<% if post.unombre == session[:usuario_nombre] %>
Y con esto comparo el nombre del autor del post con el nombre del usuario logeado actualmente. Esto funciona porque lo he probado con <% if post.usuario_id == 'fulanito' %> y funciona. El problema es como almacenar el nombre del usuario en esa session.
Yo probé lo siguiente:
#amin_controller.rb
def login
if request.post?
usuario = Usuario.authenticate(params[:nombre], params[:password])
if usuario
#Aqui parece que en usuario_id almacena la id del usuario. Asi que lo cambio por
#session[:usuario_nombre] = usuario.nombre
session[:usuario_id] = usuario.id
redirect_to(:action => "index")
else
flash.now[:notice] = "Usuario o contraseña no válido"
end
end
end
Yo creía que así funcionaría, pero no fue así. A ver si podríais darme alguna pista.
EDITO: ostiás que raro. Porque, ya de la desesperación pruebo cualquier cosa y he probado <% if post.unombre == session[:usuario_id].nombre %>(o eso creo recordar) y me funcionó! y todo contento cerre la sesión, me logée con otro usuario y me dio un error: "undefined method `nombre' for 1:Fixnum" y ya no me ha vuelto a funcionar.. :( que raro :(:(
Vamos, si no ha sido una venada de Rails, la cosa está entre ese if y en admin_controller en "session[:usuario_id] = usuario.id" que fue lo unico que he ido cambiando
EDITO2: Bueno, no sé exactamente que hice ahora que no hiciera antes, pero me ha funcionado. De hecho me llevé un buen susto porque en un momento me habia cascado todo y no funcionaba nada jaja. Me gustaría poner la solución pero no entiendo qué fue lo que hice que antes no hiciera.