ruby-on-rails - not - devise rails ejemplos
¿Cómo pasar el usuario actual de Devise como user_id? (2)
Estoy practicando mi Ruby on Rails mediante la creación de una aplicación simple donde los usuarios pueden registrarse (usando Devise) y publicar artículos.
Después de instalar Devise, sigo adelante y genero un andamio para los artículos
rails g scaffold article title:string article:text user_id:integer
Luego creo el controlador de usuario Devise
rails generate devise User
El controlador de mi artículo:
class Article < ActiveRecord::Base
belongs_to :user
end
Mi controlador de usuario:
class User < ActiveRecord::Base
has_many :articles
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
attr_accessible :email, :password, :password_confirmation, :remember_me
end
Ahora mi pregunta es: ¿cómo se hace para que user_id en http: // localhost: 3000 / articles / new / sea automáticamente current_user.id?
Además, en http: // localhost: 3000 / articles / el usuario solo debería poder ver los artículos asociados con su user_id, no hay nadie más. ¿Qué cambios en el controlador de artículos debo hacer para hacer esto?
Es la primera vez que publico aquí en Stack Overflow y su ayuda será apreciada ... ¡Muchas gracias!
EDIT encontró la solución a la primera pregunta, para referencia futura.
pongo
<%= f.hidden_field :user_id %>
en _form.html.erb, y
def create
@article.user_id = current_user.id
...
end
a mi controlador de artículo. Esto está pasando satisfactoriamente el archivo current_user.id como el user_id del artículo perfectamente.
Ahora mi pregunta es: ¿cómo se hace para que user_id en http: // localhost: 3000 / articles / new / sea automáticamente current_user.id?
Debería agregar a articles_controller "def new" esta línea @ ask.user_id = current_user.id
entonces form_for @ask
pregunta por la propiedad user_id
de @ask
y la muestra. Pero no recomiendo hacer esto en una aplicación del mundo real, donde probablemente manejarías este paso en "def create" de `articles_controller
`Además, en http: // localhost: 3000 / articles / el usuario solo debería poder ver los artículos asociados con su user_id, no hay nadie más. ¿Qué cambios en el controlador de artículos debo hacer para hacer esto?
dentro del def index
articles_controller
, cambie a @articles = Article.where(user_id:current_user.id)
. Tenga en cuenta que también debe agregar un before_filter :require_user
para asegurarse de que current_user
no sea nulo.
En su nueva acción ArticleController #, agregue la siguiente línea:
@article = current_user.articles.build
En cuanto a su acción de índice:
@articles = current_user.articles