例如,我的Ruby on Rails應用程序中有Post
模型。我想創建一種無代碼經驗的用戶可以爲生產中的所有帖子設置到期日期的方式。Rails,保存一個值的最佳方式從管理員處詢問
我的意思是,例如,Post創建於21:00,管理員希望在n
小時內過期。你可以從管理員那裏詢問價值。 (並且所有帖子的n
值都是一樣的)
你不會在你的db中爲一條記錄創建一個新表,對吧?但是你需要一個地方來保存這個值。我還有什麼其他選擇?
希望我讓自己清楚,謝謝!
例如,我的Ruby on Rails應用程序中有Post
模型。我想創建一種無代碼經驗的用戶可以爲生產中的所有帖子設置到期日期的方式。Rails,保存一個值的最佳方式從管理員處詢問
我的意思是,例如,Post創建於21:00,管理員希望在n
小時內過期。你可以從管理員那裏詢問價值。 (並且所有帖子的n
值都是一樣的)
你不會在你的db中爲一條記錄創建一個新表,對吧?但是你需要一個地方來保存這個值。我還有什麼其他選擇?
希望我讓自己清楚,謝謝!
有許多選項(包括您的數據庫中的新表),但最適合您的方案的選項是使用環境變量。
一個環境變量可以很容易地由管理員進行更新,並且在更新後立即可用。
設置環境變量
添加此行/.bash_profile
(在Mac OS X)和/etc/environment
(在Ubuntu):
export MY_VARIABLE=VALUE
哪裏MY_VARIABLE
是你的變量的名稱和VALUE
是它的價值。從環境變量
任何地方在你的軌道
獲取值應用程式,您可以用ENV["MY_VARIABLE"]
訪問環境變量,例如:
my_env_variable = ENV["MY_VARIABLE"]
回答其他問題
這個env vars被保存在哪裏?
.bash_profile
和/etc/environment
文件。
如何從控制器中覆蓋它們?
你應該能夠
ENV["MY_VARIABLE"] = new_value
改變它的價值,但我建議不要它,你將失去使用ENV變量的優勢。
它們保存多久?
只要他們仍然在.bash_profile
和/etc/environment
文件中指定。
部署影響主題?
號
如何查看ENV列表瓦爾?
運行以下命令:
$ printenv
使用常量!在發佈模型,設置固定綁定到您希望鎖定到期日期:
class Post # ... EXPIRATION_DATE = Date.new(2017,05,14) # ... end
然後引用該常量需要的地方:
Post.create!(expiration_date: Post::EXPIRATION_DATE, # ...)
我認爲你的問題包括兩個部分:
一個簡單的方法是將一個布爾型expired
列添加到posts數據庫表中以指示帖子是否已過期。通常匹配expired_at
和expired_by
列用於審計跟蹤。
如果您使用的是導軌,則可以使用gem作爲管理視圖管理UI(例如rails_admin)。然後,您可以添加自定義邏輯,僅通過管理用戶界面調用。另一種選擇是將此邏輯公開爲custom rake task,並通過終端(無GUI)調用。
可能重複的[堅持一個單一的變量在軌道](http://stackoverflow.com/questions/23235604/persist-a-single-variable-in-rails) – Janosch