如何查找Rails Resources键是否在其数组中有值?

时间:2017-06-03 04:09:14

标签: ruby-on-rails

我有一个rails资源文档。 这些文档有一个名为author_ids的属性,它是user_id的数组。

示例:

@document.author_ids = [1,2,3,4]

我正在构建一个显示所有文档的仪表板。

def dashboard
 @documents = Documents.all
end

我希望author_ids中的所有用户都能查看文档。 我想做类似下面的事情,在那里我搜索以查看current_user.id的值是否包含在Documents资源的author_ids数组中,并将这些文档列为@documents。

def dashboard
 @documents = Document.all.where(:author_ids.include?(current_user.id))
end

我知道我不能打电话。包括?在Key(:author_ids)上,这是一个数组。我需要帮助迭代密钥中的每个值:author_id以检查current_user.id的值是否在:author_id数组中。

1 个答案:

答案 0 :(得分:0)

我相信你一定有

class Document
  has_many :document_authors
  has_many :authors, through: :document_authors

然后这将返回预期的结果

def dashboard
  @documents = Document.joins(:authors).where(authors: { id: current_user.id})
end