2016-06-27 5 views
0

私はレール4アプリを持っています。コントローラでは、データベース内の各割り当てエントリを繰り返して、要件が複数の割り当てに関連付けられているかどうかを確認します。しかし、コントローラにヒット= 0、ヒット= 1などのカウンタを追加する方法はわかりません。コントローラにカウンタを追加する。レール4

EDIT:割り当てと要件の関係はHABTMです。

私のコードは以下の通りです:

def check_requirements 
@assignments = Assignment.all 
@assignment = Assignment.find(params[:id]) 
@requirement = Requirement.find(params[:requirement_id]) 
@assignments.each do |assignment| 
     if assignment.include(requirement) 
     #here's where the counter should go 
     end 
    end 
    if counter is greater than zero or one, do nothing 
    else @assignment.delete(requirement) 
end 
+0

割り当てと要件の間の関係は何ですか?スキーマを投稿できますか? – Sebin

答えて

1
def check_requirements 
@assignments = Assignment.all 
@assignment = Assignment.find(params[:id]) 
@requirement = Requirement.find(params[:requirement_id]) 
counter = 0 
@assignments.each do |assignment| 
     if assignment.include(requirement) 
     counter+=1 
     end 
    end 
    if counter is greater than zero or one, do nothing 
    else @assignment.delete(requirement) 
end 
+0

メガンが望むものに応じて、以前の答えよりも意味があります。 – oliviergg

2

を使用できEnumerable#each_with_index

def check_requirements 
@assignments = Assignment.all 
@assignment = Assignment.find(params[:id]) 
@requirement = Requirement.find(params[:requirement_id]) 
@assignments.each_with_index do |assignment,hit| 
     if assignment.include(requirement) 
     p "hit : #{hit}" 
     end 
    end 
    if counter is greater than zero or one, do nothing 
    else @assignment.delete(requirement) 
end 
+0

"p"のpは何をするのですか?#{hit} '"? –

+0

ヒットを印刷するだけで、その価値を確認できます。私はあなたがヒットで何をしたいのか分かりません。したがって、この行を必要なものに置き換えてください。 – oliviergg

関連する問題