Ruby on rails Rails help create有许多功能,属于assoction

Ruby on rails Rails help create有许多功能,属于assoction,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,以下是我的用户模型: class User < ActiveRecord::Base has_many :posts end 我在posts表中创建了一个列user_id 为什么会出现错误?我如何关联当前用户,该用户已登录帖子?self.user将为nil,因此您尝试在nil上运行方法build,该方法将引发异常,就像您得到的一样 要将用户添加到帖子中,您只需通过设置属性进行分配: def ejer self.user = User.new end 您还可以使用build_user

以下是我的用户模型:

class User < ActiveRecord::Base
has_many :posts
end
我在posts表中创建了一个列user_id

为什么会出现错误?我如何关联当前用户,该用户已登录帖子?

self.user将为nil,因此您尝试在nil上运行方法build,该方法将引发异常,就像您得到的一样

要将用户添加到帖子中,您只需通过设置属性进行分配:

def ejer
  self.user = User.new
end
您还可以使用build_user方法

def ejer
  build_user
end
或将用户设置为现有用户:

def ejer
  self.user = User.first
end

从你对Mario的回复来看,你实际上并不想建立一个新用户——这会创造一个新记录

我建议你看一看。在模型和控制器中正确连接后,您的POST模型可以成为:

class Post < ActiveRecord::Base

  belongs_to :user
  validates :user, :presence => true

  before_validate do
    self.user ||= User.current_user
  end
end
我将钩子改为在\u validate之前,并添加了一个验证,以确保有一个关联的用户,因为在大多数情况下,允许在没有用户id的情况下创建帖子是没有意义的


哦,我相信还有其他解决方案可以获得用户。当前用户或同等用户,Senient用户正是我个人使用的用户。

您迁移了数据库吗?是的,我迁移了数据库。您可以显示控制器的代码吗?是的,这里是@post=post.newparams[:post],好的,但用户id在params[:post]内吗?我已使用build_用户,但数据库中未提交任何用户id。用户\u id应该是当前的\u user.idoh right,然后您需要将该用户分配给当前用户。self.user=current\u user然后我得到一个nameerror:未定义的局部变量或方法'current\u user'
def ejer
  self.user = User.first
end
class Post < ActiveRecord::Base

  belongs_to :user
  validates :user, :presence => true

  before_validate do
    self.user ||= User.current_user
  end
end