我正在Ruby Rails中創建一個調度系統。該系統由客戶,資源和預訂組成。預訂客戶和資源有很多不同之處。客戶和資源可以有很多預訂。Rails - 已驗證的受保護屬性?
預訂了customer_id和booking_resource_id我認爲應該受到保護。我還使用booking_resource作爲模型,因爲Resource與activeadmin衝突。
我正在使用validates_overlap gem,它允許輕鬆地創建一個與範圍重疊驗證:booking_resource_id(https://github.com/robinbortlik/validates_overlap)。目標是我們永遠不能同時安排同一資源。
整個事情在批量分配下工作,但只要我將booking_resource_id設置爲受保護狀態,就可以在控制器中添加各個分配,並通過驗證。
如何驗證受保護的屬性?
我讀http://www.davidverhasselt.com/2011/06/28/5-ways-to-set-attributes-in-activerecord/但我似乎有點走投無路。如果我使用屬性=和覆蓋質量分配保護點是什麼?
class Booking < ActiveRecord::Base
belongs_to :customer
belongs_to :booking_resource
attr_accessible :approved, :approvedBy, :end, :start, :title
attr_protected :customer_id, :booking_resource_id
validate :start_cannot_be_future
validates :start, :end, :overlap => {:scope => :booking_resource_id}
def start_cannot_be_future
if self.start > self.end
errors.add(:start, "Date can't be in the future")
end
end
end
我可以在這裏偷步......看樣子設置@ booking.customer_id =參數[:預訂] [:CUSTOMER_ID]不驗證,我沒有看到它,因爲我沒有正確的重定向失敗的控制器,剛剛設置爲重定向回到索引。 –