我想做这样的事情:
假设:
@user1
@user2
Post模型的位置(id,user_id)
@posts = @user1.posts
我想获取user1的所有帖子,并将user_id设置为@ user2
有一种简单的单行方式吗?或者我是否必须遍历所有@posts并更新属性并保存记录?
由于
答案 0 :(得分:4)
您可以在Post类上使用类方法update_all
来完成此操作。传递的第一个字符串本质上是SQL更新语句的SET子句,第二个字符串是WHERE子句。
Post.update_all("user_id = #{@user2.id}", "user_id = #{@user1.id}")
答案 1 :(得分:2)
我使用_ids
属性。
@user2.update_attribute(:post_ids, @user1.post_ids)
如果您输入
@user1.post_ids # --> [1,2,3,4]
您将获得用户连接到阵列中的所有帖子的所有ID。
你也可以用这种方式设置关系
@user2.post_ids = [1,2]
@user2.save
所以,为了解决你的问题,我只是将@ user1的post id数组分配给@ user2的post id。