2017-04-19 37 views
-3

情況我有以下型號如何編寫其中模型

class Customer 
    class CustomerUsage < ActiveRecord::Base 

    self.table_name = 'vCustomerDetails' 

    end 
end 

我怎樣寫餘地where vCustomerDetails.State = 'California' and vCustomerDetails.Statusflag = 'Y'一個範圍?

+1

你爲什麼不遵循Rails約定?使用大寫的表和列名稱不允許你使用Rails的魔法,並會使一切變得更加困難。 – spickermann

回答

0

不完全像下面,但應該是那樣的。

scope :customers_from_california, -> { where(state: "California") } 
    scope :having_status_flag, -> { where(flag: "Y") } 

,你也可以加入他們喜歡,

scope :flagged_californians, ->{customers_from_california.where(flag: "Y")} 

附:我知道命名吸盤 - ))

+1

我不確定這是否可行。看起來OP使用大寫字母列名稱。 – spickermann

+1

@spickermann取決於使用的適配器和/或數據庫本身。我知道'sql-server'適配器有'reflect_lowercase_schema'選項可以正確處理(對於方法命名,例如'def State'設置爲'true'時變成'def state')。至於數據庫,我知道ms-sql不關心大小寫,mySQL有一個選項來啓用/禁用這個功能,而且我還沒有遇到postgresql關心的時間(不能爲其他人說話,因爲我沒有'用它們)。 @marmeladze也許改名字爲':flagged_californians' :) – engineersmnky

+0

是的,這是更好的 - )) – marmeladze

相關問題