簡體   English   中英

將默認值添加到列中,具體取決於Rails中模型中另一個字段的值3.2.13數據庫遷移

[英]Adding Default Value to Column Depending on the Value of Another Field in A Model In A Rails 3.2.13 Database Migration

我的模型中已經有一個日期字段(字符串)。 我計划添加具有不同長日期格式的其他字符串字段,以在與現有日期字段相關的文本搜索中使用。 這是為了方便視覺障礙者的文本搜索。

我做過類似的事情,但效果很好。

add_column :media_libraries, :media_year, :string, default: Time.now.year

但是,我要執行的操作是添加日期字段,並使用現有日期字段的值默認為新日期字段。

我在其中一個視圖中有以下代碼,該代碼具有要用於初始化新的長日期字段的值的字段。

media_created.to_date

我可以在遷移中執行類似的操作,在該遷移中可以根據記錄中另一個字段的值設置默認值嗎?

add_column :media_libraries, :media_created_en, :string, default: :media_created.to_date.strftime("somedateformat")

我已經閱讀了另一篇文章,其中介紹了如何在Rails遷移中添加數據庫列,並根據另一列(其中一個答案建議在遷移中進行查詢) 填充它 這是我要實現的嘗試。 但是,其他發布在Stack Overflow上的人則認為,在遷移中引用其他字段不是一個好主意。 對我來說,因為這是一次性的事情,所以我不擔心這些問題。

MediaLibrary.update_all(media_created_en: :media_created.to_date.strftime("%B %d, %Y"), media_created_fr: :media_created.to_date.strftime("%d %B %Y"), media_created_pt: :media_created.to_date.strftime("%d %B %Y"), media_created_es: :media_created.to_date.strftime("%d de %B de %Y"))

我想對現有記錄執行此操作,因為我要更新1000多個記錄。 我將代碼放入模型或控制器中,以設置字段以供將來對模型進行更新。

我到處都看過,但是只能找到用於默認設置或上面一個示例的內置函數。 API除了“ options {}”外沒有其他說明。 如果無法做到這一點,我准備在我的應用程序的admin部分編寫一種方法來執行此操作。

任何幫助將不勝感激。 我會繼續尋找。

我一直在研究,卻一無所獲,因此決定嘗試進行一些遷移。 我無法在默認值中成功合並模型中的字段。 由於時間緊迫,我決定只在遷移中創建字段,然后在控制器中編寫一個方法來更新模型中的字段。 現在,我將編寫代碼來更新要添加的記錄的字段,以確保正確更新了字段。

如果有人對此有解決方案,請在此處發布,但我正在繼續。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM