2016-03-24 15 views
0

私はレールが初めてであるので、あなたの助けと助言は非常に高く評価されます。has_manyのスコープを書くbelongs_to Association - Rails 4

目的:

  • 私は何を目指し、何が期限が切れていない広告に所属する唯一のアプリケーションフォームを表示することです。 2がアクティブで、1 iは@user.forms.countにより、すべてのユーザーがアプリケーションのフォームを数えることができる
  • 、期限が切れています - - 私は3つの広告を作成している - これは現在
  • 私はすべてのジョブに適用されたユーザが
  • 現時点での広告持っていますすべての広告のためのすべてのフォームを表示します
  • 一つは、私が

モデル

期限切れされていない広告の唯一のユーザーのフォームを表示する方法を私に助言することができ
user.rb 
has_many forms 

form.rb 
belongs_to user 
belongs_to advert 

advert.rb 
has_may forms 

scope :active_adverts, -> {where(['deadline >= ?', Date.current])} 

users_controller.rb

def dashboard 
    if current_user 
     @user = User.find(current_user) 
     @user_applications = @user.forms 
     @form = @user.forms.find(params[:id]) 
    else 
     redirect_to error_path 
    end 
    end 

私は<%= @user.forms.where(advert: @form.advert.active_advert).count %> "ビュー/ユーザー/ dashboard.html.erb" ビューでこれを試みたが、私はそれが動作しません実現するために来ています。

class User < ActiveRecord::Base 
    has_many :forms 
    has_many :adverts, through: :forms # <-- The change here 
end 

class Advert < ActiveRecord::Base 
    has_many :forms 
    scope :active, -> { where('deadline > ?', Time.now) } # <-- The change here 
end 

class Form < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :advert 
end 

だからあなたcount functionは次のようになります:あなたはこのようなscopeを定義することがずっと

答えて

1

を理解されるであろう助言

@users.adverts.active.count 
+0

洙多くのヒエウをありがとうございました! – ARTLoe