在具有关系的表单中自动填充ID

时间:2009-03-30 20:51:01

标签: ruby-on-rails ruby forms session relational

我创建了一个博客,它会有帖子,帖子是由用户创建的。我的博客中已有登录系统。我已经建立了用户和他的帖子之间的关系。现在,当我想添加一个新帖子时,我希望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
...

1 个答案:

答案 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。