モデルに既に日付フィールド (文字列) があります。既存の日付フィールドに関連するテキスト検索で使用するために、異なる長い日付形式の他の文字列フィールドを追加する予定です。これは、視覚障害者のテキスト検索を容易にするためです。
私は以前にこのようなことをしたことがありますが、うまくいきました。
add_column :media_libraries, :media_year, :string, default: Time.now.year
ただし、私がやりたいことは、日付フィールドを追加し、既存の日付フィールドの値を使用して新しい日付フィールドをデフォルトにすることです。
新しい長い日付フィールドの値を初期化するために使用したいフィールドを持つビューの 1 つに、以下のコードがあります。
media_created.to_date
レコードの別のフィールドの値に応じてデフォルト値を設定できる移行で、このようなことはできますか?
add_column :media_libraries, :media_created_en, :string, default: :media_created.to_date.strftime("somedateformat")
別の投稿を読んで、Rails 移行でデータベース列を追加し、回答の 1 つが移行内のクエリを示唆した別の列に基づいてデータを入力しました。これは、それを実装するための私の試みです。ただし、スタック オーバーフローに投稿している他の人は、移行で他のフィールドを参照するのは良い考えではないと感じています。私にとっては、これは 1 回限りのことなので、これらの問題について心配する必要はありません。
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 を超えるため、既存のレコードに対してこれを実行したいと考えています。モデルまたはコントローラーにコードを配置して、モデルの今後の更新用にフィールドを設定します。
私はいたるところを見てきましたが、デフォルトまたは上記の1つの例に使用される組み込み関数しか見つかりません。API は、「options{}」以外には何も言いません。これができない場合は、アプリケーションの管理セクションでこれを行うメソッドを 1 回記述する準備ができています。
どんな助けでも大歓迎です。探し続けます。