2014-06-16 153 views
-1

有以下型號:軌道4遷移和範圍

class BeautySalonService < ActiveRecord::Base 
    validates :name, :cost, :beauty_salon_category, presence: true 

    belongs_to :beauty_salon_category 

    has_many :beauty_salon_employee_services, dependent: :destroy 
    has_many :beauty_salon_employees,    through: :beauty_salon_employee_services 

    scope :with_employees, select { |bss| bss.beauty_salon_employees.size > 0 } 
end 

當我嘗試使用Capistrano的我碰到下面的錯誤我的代碼部署到生產服務器:

PG::UndefinedTable: ERROR: relation "beauty_salon_services" does not exist 
LINE 1: SELECT "beauty_salon_services".* FROM "beauty_salon_services... 

而這個錯誤鏈接到'scope:with_employees'這一行。如果我評論這一行,我的代碼運行良好。有什麼麻煩可能是?提前致謝。

+0

你真的有'在你的數據庫表beauty_salon_services'? – Pavan

+1

你在哪裏定義了beauty_salon_services關係? –

+0

看模型,其中的全部信息 – malcoauri

回答

0

作用域用於sql結構 - 不是ruby過濾結果集。爲此,你應該寫一個常規的ruby方法。

錯誤的原因是,當您運行大概要創建此表的遷移時,它會加載此模型。

scope :with_employees, select { |bss| bss.beauty_salon_employees.size > 0 } 

結束有執行self.select,即加載所有BeautySalonService對象,並調用數組的select方法就可以了