【发布时间】:2011-12-12 09:41:19
【问题描述】:
我正在通过创建一个简单的应用程序来练习我的 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
现在我的问题是:如何让http://localhost:3000/articles/new/ 中的 user_id 自动成为 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 完美传递了。
【问题讨论】:
-
请更具体。你没有什么意义。
-
我认为我已经尽可能地解释了它。但是好的,TL;博士 --> 文章表有 3 个字段(标题、文章和 user_id)。我在问创建表单中的user_id如何=来自Devise的current_user.id。
标签: ruby-on-rails devise