情況我有以下型號如何編寫其中模型
class Customer
class CustomerUsage < ActiveRecord::Base
self.table_name = 'vCustomerDetails'
end
end
我怎樣寫餘地where vCustomerDetails.State = 'California' and vCustomerDetails.Statusflag = 'Y'
一個範圍?
情況我有以下型號如何編寫其中模型
class Customer
class CustomerUsage < ActiveRecord::Base
self.table_name = 'vCustomerDetails'
end
end
我怎樣寫餘地where vCustomerDetails.State = 'California' and vCustomerDetails.Statusflag = 'Y'
一個範圍?
不完全像下面,但應該是那樣的。
scope :customers_from_california, -> { where(state: "California") }
scope :having_status_flag, -> { where(flag: "Y") }
,你也可以加入他們喜歡,
scope :flagged_californians, ->{customers_from_california.where(flag: "Y")}
附:我知道命名吸盤 - ))
我不確定這是否可行。看起來OP使用大寫字母列名稱。 – spickermann
@spickermann取決於使用的適配器和/或數據庫本身。我知道'sql-server'適配器有'reflect_lowercase_schema'選項可以正確處理(對於方法命名,例如'def State'設置爲'true'時變成'def state')。至於數據庫,我知道ms-sql不關心大小寫,mySQL有一個選項來啓用/禁用這個功能,而且我還沒有遇到postgresql關心的時間(不能爲其他人說話,因爲我沒有'用它們)。 @marmeladze也許改名字爲':flagged_californians' :) – engineersmnky
是的,這是更好的 - )) – marmeladze
你爲什麼不遵循Rails約定?使用大寫的表和列名稱不允許你使用Rails的魔法,並會使一切變得更加困難。 – spickermann