Как передать текущий_пользователь Devise как user_id?

Я практикуюсь в Ruby on Rails, создавая простое приложение, в котором пользователи могут регистрироваться (с помощью Devise) и размещать статьи.

После установки Devise я создаю шафл для статей

 rails g scaffold article title:string article:text user_id:integer

Затем я создаю контроллер пользователя Devise

rails generate devise User

Мой контроллер статей:

class Article < ActiveRecord::Base
    belongs_to :user
end

Мой контроллер пользователя:

class User < ActiveRecord::Base
  has_many :articles

  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  attr_accessible :email, :password, :password_confirmation, :remember_me
end

Теперь мой вопрос: как сделать так, чтобы user_id в http://localhost:3000/articles/new/ автоматически становился current_user.id?

Также, в http://localhost:3000/articles/ пользователь должен иметь возможность просматривать только статьи, связанные с его user_id, а не чьи-либо еще. Какие изменения в контроллере статей я должен сделать для этого?

Я впервые пишу здесь, на Stack Overflow, и ваша помощь будет оценена по достоинству. Спасибо большое!

EDIT нашел решение первого вопроса, на будущее.

Я поместил

<%= f.hidden_field :user_id %> 

в _form.html.erb, а

def create
    @article.user_id = current_user.id 
    ...
end

в контроллер статьи. Это успешно передает current_user.id в качестве user_id статьи.

9
задан cdotfeli 12 December 2011 в 10:45
поделиться