如何从另一个模型访问模型?

时间:2013-10-14 03:31:16

标签: ruby-on-rails ruby model

我在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

2 个答案:

答案 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的回答中。