2016-03-24 138 views
0

我是新來的鐵軌,所以你的幫助和建議將不勝感激。寫作範圍has_many belongs_to協會 - Rails 4

宗旨:

  • 我的目標是做的是顯示屬於未過期的廣告只申請表格。
  • 目前我有誰也適用於所有作業的用戶廣告
  • 目前 - 我有3個廣告創造 - 2活動1個已過期
  • 我可以通過@user.forms.count計算所有用戶申請表 - 這將顯示所有形式的所有廣告
  • 可能一個勸我,我怎麼只顯示尚未到期

車型

廣告的用戶的形式
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 

我想這在視圖 「的意見/用戶/ dashboard.html.erb」 <%= @user.forms.where(advert: @form.advert.active_advert).count %>,但我已經認識到這是行不通的。你的意見將非常感激

回答

1

可以定義scope這樣的:

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將是:

@users.adverts.active.count 
+0

感謝你洙多總管Hieu! – ARTLoe