2016-11-17 47 views
0

我需要通過名稱訂購天填充場,我有一個域名爲DAY_NAME一個表,它的一個選擇,因此只能是週日,週一等軌道模型依賴於另一場

所以我我想到另一個字段添加到我的表(day_order),當有人進入上週日DAY_NAME它填充day_order 1,當有人在DAY_NAME進入週一,但我不知道如何填充取決於DAY_NAME的day_order。

有可能是另一種選擇,它應該是當有人在DAY_NAME挑選「星期日」,存儲代替1,讀表的時候再次進行更改。但我不知道如何去做。

所以我需要幫助,我試圖用一個數組存儲日期的順序,然後嘗試進行自定義順序,但我認爲這會很容易(並且更快)以另一種方式模型。所以我可以很容易地排序。

PD:我在模型

回答

0

我解決它看before_save過濾器,

最後,我添加了一個整數day_order場的時間表表。和由它的存在強制性

validates :day_order, presence: true 

然後我在模型中限制了可以被添加到該字段與

def day_order_enum 
     [1, 2, 3, 4, 5, 6] 
    end 

和下一個步驟的數量做before_validation方法

before_validation :set_day_order 

    def set_day_order 
     if self.day_name == "monday" 
      self.day_order = 1 
     elsif self.day_name == "tuesday" 
      self.day_order = 2 
     elsif self.day_name == "wednesday" 
      self.day_order = 3 
     elsif self.day_name == "thursday" 
      self.day_order = 4 
     elsif self.day_name == "friday" 
      self.day_order = 5 
     elsif self.day_name == "saturday" 
      self.day_order = 6 
     end 
    end 

最後,我做了一個範圍由day_order場訂購天

scope :day_asc_order, ->{ order('day_order ASC') } 

而且我上市時使用的day_asc_order。

也許這是不是做的最好的方式,但它的工作原理。如果有人知道更好的方式來分享它,我會感謝他/她。 PS:我不需要星期天,所以它不在名單上;)