2016-09-22 4 views
2

一つの簡単な質問に項目を数える:Railsの4:モデルロジック - ユーザーによって

は、私は、ユーザー(工夫)&項目モデルを持っていると仮定します。 current_userはアイテムを作成してマークすることができます。もしそうなら、is_markedの値はtrueに変わります。
これは機能します。

しかし、current_userでマークされたアイテムの数を受け取るにはどうすればよいですか?

私はこのような何か考えた:

current_user.joins(:items).where(user.id: current_user.id) 
# How can I count the number of items marked? 
# In addition, I don't know if it is the right solution to use joins. Correct me if I am wrong. 

協会: ユーザー:has_many :items アイテム:すべての答えを事前にbelongs_to :user

感謝を!追加情報が必要な場合は教えてください。

+0

あなたはこれらのモデルbeetwen関連を持っていますか? –

+0

'current_user.items.where(is_marked:true).count' – fanta

+0

@BartekGładys編集済みの投稿です。 – Gugubaight

答えて

2

ユーザーとアイテムの関連付けがあるとしますか?そうならば、あなたは、単にすることができます:Barketグラディス答えに拡大

current_user.items.where(is_marked: true).count 
+0

完璧に動作します。私はできるだけ早くそれを受け入れるでしょう:) – Gugubaight

+0

また、項目に範囲を作成し、それを使用することができます。 –

1

、あなたはそれが便利なアイテムのスコープを作成し、それを使用するかもしれません。 items.rbモデルファイルで

次のように

scope :marked, -> { where(:is_marked => true) } 

は、その後のスコープを使用します。

current_user.items.marked.count 
+0

その答えをありがとう!それは私が間違いなく最後にやっていることです:) – Gugubaight

関連する問題