2015-02-05 56 views
0

所以我有一個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 %> 
+0

通過'@ lesson'完成調用 – Sontya

回答

0

呼籲@lesson完成像@lesson.completed(current_user)目前烏爾稱這是對課程類,如果ü要做到這一點化妝完成一個類的方法 加入自我完成

def self.completed(user) self.progresses.where(:user_id => user.id).first.completed end

然後你可以寫

Lesson.completed(current_user)

+0

我在@lesson上調用完成並獲得「ERROR:語法錯誤處於或接近」。「(它似乎是current_user.id中的'。')。我還刪除了查詢中的lesson_id部分,因爲我認爲這是多餘的(錯誤顯示它已經知道了課程標識之前運行了整個查詢)。還有什麼想法?謝謝回覆。 – bvcm

+0

我將查詢調整爲(:user_id = current_user.id),現在錯誤爲「syntax error,unexpected')',期待'@lesson = Lesson.find(params [:id])'這一行的keyword_end。 – bvcm

+0

檢查params [:id]的值,嘗試打印它和'Lesson.find_by_id(params [:id])' – Sontya