对标题感到抱歉,无法想出一个更好的描述我正在尝试做的事情。
在previous question中,一些用户建议我可以简化模型。我没有得到任何评论,但我认为我正在做'正确的方式',因为我需要在连接表中存储其他属性。
无论如何,我的模型都是这样设置的。
class Student < ActiveRecord::Base
has_many :student_notes
has_many :notes, :through => :student_notes
has_many :relationships
has_many :users, :through => :relationships
end
class Note < ActiveRecord::Base
has_many :student_notes
has_many :students, :through => :student_notes
end
class StudentNote < ActiveRecord::Base
belongs_to :student
belongs_to :note
end
class User < ActiveRecord::Base
has_many :relationships
has_many :students, :through => :relationships
has_many :notes, :through => :students
end
class Relationship < ActiveRecord::Base
belongs_to :student
belongs_to :user
end
现在,在我的笔记显示视图中我有这个:
...
<% @note.students.each do |student| %>
<tr>
<td><%= link_to student.full_name, student %></td>
</tr>
<% end %>
...
这是有效的,除了我想只显示属于current_user的学生。 关于如何实现它的任何提示?我想模型中的辅助方法是可行的方法,但我完全迷失了。
谢谢!
答案 0 :(得分:1)
在Student
:
scope :belonging_to, -> (u) { joins(:users).where users: { id: u.id } }
然后:
@note.students.belonging_to(current_user)...