所以我有一個Lessons,Users和Progresses模型如下。如果用戶將課程標記爲已完成(在課程展示頁面上,最終爲每個課程編制索引),我試圖顯示「true」。現在我只想讓基礎工作,並在控制檯中設置屬性。用戶1有許多進步,查詢的目的是找到一個匹配當前課程id和current_user id的人。我已經得到了所有東西,但是current_user無法從模型中看到。我讀到它需要從控制器傳遞。但是控制器現在給出了一個未定義的方法「完成」錯誤。我已經閱讀了railsguides和其他SO問題,但似乎沒有在這裏得到什麼。仍然是初學者,所以任何幫助/建議表示讚賞。另外,因此,如果這是一個迂迴/糟糕的做法,請告訴我更多接受的方式。從模型中檢索連接表屬性4
lesson.rb(。首先是隻排除我已經嘗試了其他)
has_many :progresses
has_many :users, :through => :progresses
def completed(user)
self.progresses.where("lesson_id = self.id AND user_id = user.id}").first.completed
end
user.rb
has_many :progresses
has_many :lessons, :through => :progresses
progress.rb(已user_id說明,lesson_id完成:布爾)
belongs_to :user
belongs_to :lesson
而且lessons_controller.rb
def show
@lesson = Lesson.find(params[:id])
Lesson.completed(current_user) #Trying to make current_user available to model
end
教訓#顯示
<%= @lesson.completed %>
通過'@ lesson'完成調用 – Sontya