我创建了一个博客,它会有帖子,帖子是由用户创建的。我的博客中已有登录系统。我已经建立了用户和他的帖子之间的关系。现在,当我想添加一个新帖子时,我希望Rails自动填充user_id字段。
我应该添加隐藏字段并从我保存的会话中添加user_id吗?
或者Ruby on Rails是否有自己的方式来处理关系和使用ID?
@edit:
模特:
class Post < ActiveRecord::Base
validates_presence_of :subject, :body
has_many :comments
belongs_to :user
end
控制器:
....
def new
@post = Post.new
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @post }
end
end
...
答案 0 :(得分:0)
如果您想确保博主的帖子与正确的用户相关联,那么根本不要使用表单字段,因为最终用户可以更改它们的值。最好依靠您拥有的登录系统,并在提交博客文章表格时执行类似的操作:
def create
@post = current_user.posts.build(params[:post])
if @post.save
...
else
...
end
end
这假设你有一个current_user
方法,可能在application.rb中,它通过你的登录系统获取当前用户。也许是这样的事情:
def current_user
@current_user ||= User.find(session[:user_id])
end
并假设您已将has_many :posts
放入User.rb。