如何通过Rails控制台将帖子添加到用户ID?

3

如何通过Rails控制台将用户附加到帖子上?我忘记了正确的方法。假设您创建了一篇文章,并希望将其附加到您创建的user_id上,那么如何通过Rails控制台进行操作呢?


Rails控制台

@post = Post.create(content: "nice day we are having")

@user = User.find(2)

你的关联是什么?用户拥有多个帖子(user has_many posts) - titan
1
使用此代码:User.find(2).posts.create(content:'text') - uzaif
1
你应该使用@user.posts.create(content: "今天天气不错"), 这将在帖子记录中添加user_id。 - power
@titan 不太喜欢。如果我要通过Rails控制台附加一个帖子,我认为应该像这样:post.user = user_id(2),我不确定是否正确,但类似于这样。基本上,我想在控制台中创建一个帖子,然后通过控制台将user_id附加到该帖子。 - Mike Shasaco
@power 谢谢你!! - Mike Shasaco
你还应该在问题中分享模型关联以获得更清晰的表述。 - Jagdeep Singh
5个回答

2

不需要逐个创建 post,可以通过 @user 创建:

@user = User.find(2)
@user.posts.create(content: "nice day we are having")

它将自动为帖子记录分配用户ID。


1
如果在UserPost之间有has_many关联,例如`user has_many posts',则您可以在控制台上将它们附加为:
@user.posts << @post

1
如果有许多文章,那么一次性运行循环将用户ID附加到所有文章中将更具成本效益。在控制台中执行此操作的一种方法是:
everyevery = Post.all #Assign all posts to a variable

然后遍历并追加ID:
everyevery.each do |post|
   if post.user_id = nil
      post.user_id = 1 # Assigns user_id of 1. If there are 5 then you could do say rand(1..5)
      post.save
   end
end

当然,这假设你已经建立了你的belongs_tohas_many关系。

1
简单步骤:
创建一个新的帖子:
p = Post.new
p.title = "post title"
p.body = "post body"

寻找要附加到帖子的用户。
 u = User.find(2)
 p.user_id = u.id
 p.save

这个很好用。
或者试试这个。
u = User.find(2)
p = u.posts.build("title"=> "post title", "body" => "post body")
p.save

在控制台中运行命令之前,需要先定义关系。


0

首先,检查您是否在用户和帖子之间建立了关联,然后在控制台中简单地编写:

@post = Post.create(content: "nice day we are having", user: User.find(2))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接