我在ROR中有两个模型,一个是Note
,另一个是Access
。每个Access都有一个Note字段和一个用户字段。在我的笔记控制器的索引操作中,我想过滤用户拥有的笔记(完成)以及用户可访问的笔记,我将其命名为@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
答案 0 :(得分:2)
class User < ActiveRecord::Base
has_many :accessible_notes, :through => :accesses, :source => :notes
end
@accessible_notes = current_user.accessible_notes
答案 1 :(得分:0)
怎么样
@personal_access.each do |accessible|
@accessible_notes << accessible.note
end
@accessible_notes.flatten!
使用Active Record queries可能有更快捷的方式。
更快的方法是在depa的回答中。