rails not hacer español ejemplos create could como ruby-on-rails devise

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