Ruby on rails 如何通过设计';用户的当前用户是否为用户id?

Ruby on rails 如何通过设计';用户的当前用户是否为用户id?,ruby-on-rails,devise,Ruby On Rails,Devise,我正在通过创建一个简单的应用程序来练习RubyonRails,用户可以在其中注册(使用Desive)并发表文章 安装Desive后,我继续为这些物品生成一个脚手架 rails g scaffold article title:string article:text user_id:integer 然后我创建Desive用户控制器 rails generate devise User 我的文章管理员: class Article < ActiveRecord::Base bel

我正在通过创建一个简单的应用程序来练习RubyonRails,用户可以在其中注册(使用Desive)并发表文章

安装Desive后,我继续为这些物品生成一个脚手架

 rails g scaffold article title:string article:text user_id:integer
然后我创建Desive用户控制器

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作为文章的用户_id传递。

在ArticleController中#新操作添加以下行:
@article=当前用户.articles.build

至于您的索引操作:
@articles=当前用户。articles

现在我的问题是:如何使中的用户\u id自动成为当前的\u user.id

您应该将此行添加到articles_controller的“def new”中 @ask.user\u id=当前用户id

因此,
form\u for@ask
请求
@ask
user\u id
属性并显示它。但我不建议在现实世界的应用程序中执行此操作,因为您可能会在“articles\u controller”的“def create”中处理此步骤

rails generate devise User
`此外,在中,用户应该只能查看与其用户id关联的文章,而不能查看其他任何人。要做到这一点,我应该对articles controller进行哪些更改


articles\u controller
def index
中,更改为
@articles=Article.where(user\u id:current\u user.id)
。请注意,您还应在\u筛选器之前添加一个
:require\u user
,以确保
当前\u user
不是零。

请更具体一些。你没什么道理。我想我已经尽我所能解释清楚了。。但是好的,TL;dr-->文章表有3个字段(标题、文章和用户id)。我在问创建表单中的user\u id如何=来自designe的current\u user.id。^^谢谢。我想我明白了。我在article_controller的“def create”下输入了_form.html.erb和@article.user_id=current_user.id,这将当前_user.id作为文章的用户id传递。你的第二个解决方案是有意义的;我现在就试一试。@cdotfeli在表单中设置用户id,然后不检查它,这意味着您可以通过手动POST请求来模拟站点的任何用户。@P.S.V.R.您的第二个解决方案成功了!!非常感谢。我将在\u filter:require\u user now之前添加它。@BenoitGarret所以我不应该在表单中将用户\u id作为隐藏字段传递?我该怎么做呢?对不起,我是新手。@cdotfeli对不起,我误读了你的解决方案。实际上,您并没有在控制器中使用
隐藏表单
标记(如果您使用
参数[:article][:user\u id]
),则会使用该标记)
@article.user\u id=current\u user.id
非常完美,但您不需要其他任何东西。
def create
    @article.user_id = current_user.id 
    ...
end