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

Ruby on rails 在具有关系的表单中自动填充ID,ruby-on-rails,ruby,forms,session,relational,Ruby On Rails,Ruby,Forms,Session,Relational,我已经创建了一个博客,它将有帖子,而帖子是由用户创建的。我的博客中已经有了一个登录系统。我已经建立了一个用户和他的帖子之间的关系。现在,当我想添加一篇新文章时,我想让Rails自动填充user_id字段 我是否应该添加一个隐藏字段并从保存该字段的会话中添加用户id 或者RubyonRails有自己处理关系和使用ID的方法吗 @编辑: 模型: class Post < ActiveRecord::Base validates_presence_of :subject, :body h

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

我是否应该添加一个隐藏字段并从保存该字段的会话中添加用户id

或者RubyonRails有自己处理关系和使用ID的方法吗

@编辑:

模型:

class Post < ActiveRecord::Base
  validates_presence_of :subject, :body
  has_many :comments
  belongs_to :user 
end

如果您想确保博主的帖子与正确的用户关联,那么根本不要使用表单字段,因为最终用户可以更改它们的值。最好依靠您拥有的登录系统,并在提交博客帖子表单时执行以下操作:

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

另外,假设您在User.rb中放置了许多:posts。

如果您想确保博主的帖子与正确的用户相关联,那么根本不要使用表单字段,因为最终用户可以更改它们的值。最好依靠您拥有的登录系统,并在提交博客帖子表单时执行以下操作:

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

同时假设您已经在User.rb中放置了许多:posts。

您可以发布您的post模型和控制器吗?您可以发布您的post模型和控制器吗?谢谢您的帮助。我已经注册了用户。因此,我最终进入了控制器,在那里我发布了帖子,并添加了@post.user\u id=user.current这一行,非常有魅力谢谢你的输入谢谢你的帮助。我已经注册了用户。因此,我最终进入了控制器,在控制器中,我在帖子中添加了@post.user\u id=user.current这一行。谢谢您的输入