Buenas, estoy tratando de hacer que un usuario pueda editar sus propios
posts. Para ello he creado una relación “usuario_id” en la tabla de
Posts.
Todo me funciona bien excepto que no sé como hacer para que al crear un
post, el usuario_id se autogenere. Me explico:
Si yo creo un post, relleno el nombre, el titulo, el contenido, y al
final tengo que seleccionar yo manualmente usuario_id, cuando lo que
quiero es que ese dato se genere solo, según el usuario que sea el
conectado.
Os pego algunos datos:
posts_controller.rb
def create
@post = Post.new(params[:post])
respond_to do |format|
if @post.save
flash[:notice] = 'Post creado.'
format.html { redirect_to(@post) }
format.xml { render :xml => @post, :status => :created,
:location => @post }
else
format.html { render :action => “new” }
format.xml { render :xml => @post.errors, :status =>
:unprocessable_entity }
end
end
end
app/views/post/index.html.erb
<% if post.usuario_id == session[:usuario_id] %>
<td><%= link_to 'Edit', {:action => 'edit', :id => post.id}
%>
:method => :delete %>
<% end %>
app/views/post/new.html.erb
New post
<% form_for(@post) do |f| %>
<%= f.error_messages %>
<%= f.label :nombre %>
<%= f.collection_select :nombre, Usuario.all, :nombre, :nombre %>
<%= f.label :titulo %>
<%= f.text_field :titulo %>
<%= f.label :contenido %>
<%= f.text_area :contenido %>
<%= f.submit 'Create' %>
<% end %><%= link_to ‘Back’, posts_path %>
Como veis, esta ayuda también me servirÃa para el valor “nombre”, para
que el autor del post sea el usuario logeado.