我需要将一个ActiveRecord对象附加到已加载的ActiveRecord :: Relation。
E.g:
class BooksController < ApplicationController
def index
@books = Book.where(author: User.find(params[:user_id]))
@books << Book.find_by_name("One More Book")
end
end
如上所示,我尝试了ActiveRecord's <<
method,但它返回错误:
NoMethodError: undefined method `<<' for #<Book::ActiveRecord_Relation:0x007f9fbdc6db80>
这样做有一种优雅的方法吗?
谢谢!
答案 0 :(得分:1)
由于这是rails 5,您可以使用or
方法
Books.where(author: User.find(params[:user_id])).or.where(name: "One More Book")
答案 1 :(得分:1)
Books.where(author_id: params[:user_id])).or.where(name: "wonderful name")
如果关系定义明确,这也应该起作用:
Books.where(author: params[:user_id])).or.where(name: "wonderful name")
答案 2 :(得分:0)
作为临时修复,我已完成以下操作:
books = Book.where(author: User.find(params[:user_id])).pluck(:id)
books << Book.find_by_name("One More Book").id
@books = Book.where(id: books)
由于显而易见的原因,这种解决方案远非理想,但它可以找到更好的解决方案。