Rails将单个记录加入作用域

时间:2018-12-05 12:15:44

标签: ruby-on-rails activerecord scope

我们说有一个名为“注释”的模型。不,我们做@comments = Comment.where(name: 'John')。接下来,我们做comment = Comment.find_or_create_by(...)。 Rails中是否可以将comment联接到@comments?对于数组,我可以做@comments << comment,但我想要activeRecords ...

@comments.inspect返回"#<ActiveRecord::Relation []>"

我正在使用Rails 5.1.3

谢谢安德里亚斯

3 个答案:

答案 0 :(得分:0)

您应该在询问之前尝试!

活动记录关系具有数组可以使用的每种方法,因此您要做的就是:

@comments << comment

@comments.push(comment)

编辑:已经尝试了上述方法,但是似乎对我有用,但是另一种解决方案:

ids = @comments.collect(&:id)
@comments = Comment.where(id: (ids + comment.id))

这将从@comments中的每个记录中获取ID,然后将其添加到其他评论的ID中,然后返回该ID在该范围内的所有评论

答案 1 :(得分:0)

@comments将是Comment实例的数组。 comment将是Comment的实例。因此,进行@comments << comment没什么错,它将达到您想要的结果。

答案 2 :(得分:0)

是的,你可以做这样的事情 如果您要使用活动记录格式的数据。

Comment.where(conditions).or(Comment.where(id: 1))

所有解决方案的其余部分都很复杂,或者以数组形式提供数据。