2

我创建了一个博客,它会有帖子,并且帖子是由用户创建的。我的博客中已经有一个登录系统。我已经建立了用户和他的帖子之间的关系。现在,当我想添加新帖子时,我希望 Rails 自动填充 user_id 字段。

我应该添加一个隐藏字段并从我保存它的会话中添加 user_id 吗?

还是 Ruby on Rails 有自己的方式来处理关系和使用 ID?

@编辑:

该模型:

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
...
4

1 回答 1

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。

于 2009-03-31T03:56:58.773 回答