0

我在 ROR 中有两个模型,一个是Note,另一个是Access. 每个 Access 都有一个注释字段和一个用户字段。在笔记控制器的索引操作中,我想过滤用户拥有的笔记(完成)以及用户可以访问的笔记,我将其命名为@accessible_notes。以下代码为我提供了用户拥有的正确笔记,但是我无法让用户访问这些笔记。

基本上,我需要找到用户参与的所有访问,然后获取相应的注释。我怎样才能做到这一点?

def index
  @notes = Note.where(user: current_user)  
  @personal_access = Access.where("user_id = ?",current_user.id)
  @accessible_notes = []
  @personal_access.each do |accessible|
    tnote = Note.find(accessible.note_id)
    @accessible_notes += tnote if tnote
  end
end
4

2 回答 2

2
class User < ActiveRecord::Base
  has_many :accessible_notes, :through => :accesses, :source => :notes
end

@accessible_notes = current_user.accessible_notes
于 2013-10-14T03:45:05.117 回答
0

怎么样

@personal_access.each do |accessible|
  @accessible_notes << accessible.note
end
@accessible_notes.flatten!

使用Active Record 查询可能有更快的方法。

而这种更快的方法就是 depa 的答案。

于 2013-10-14T03:44:36.963 回答