[解決済み] ActiveRecordの作成時のidをオーバーライドする
2022-10-10 05:29:34
質問
作成時にモデルのid値をオーバーライドする方法はありますか?以下のようなものです。
Post.create(:id => 10, :title => 'Test')
があれば理想的ですが、明らかにうまくいきません。
どのように解決するのですか?
id は attr_protected であるため、mass-assignment で設定することはできません。 しかし、手動で設定する場合は、ちょうど動作します。
o = SomeObject.new
o.id = 8888
o.save!
o.reload.id # => 8888
もともとの動機はわかりませんが、私はActiveHashモデルをActiveRecordに変換するときにこのようにしています。 ActiveHashでは、ActiveRecordで同じbelongs_toセマンティクスを使用できますが、マイグレーションを行ってテーブルを作成し、データベースを呼び出すたびにオーバーヘッドが発生する代わりに、データをymlファイルに格納するだけです。 データベースの外部キーは、ymlのメモリ内のidを参照します。
ActiveHashは、頻繁に変更されず、開発者によってのみ変更されるピックリストや小さなテーブルにとって素晴らしいものです。 そのため、ActiveHashからActiveRecordに移行する場合、すべての外部キーの参照を同じにするのが最も簡単です。
関連
-
[解決済み] サーバーに接続できませんでした。そのようなファイルまたはディレクトリがありません (PG::ConnectionBad)
-
[解決済み】コントローラでJSONをレンダリングする
-
[解決済み] RVMでRubyのデフォルトバージョンを設定するには?
-
[解決済み] Ruby: public static メソッドを作るには?
-
[解決済み] サーバーはRailsで既に稼働している
-
[解決済み] Rails 4で懸念事項を使用する方法
-
[解決済み] Ruby/RailsでHashからキーを削除して残りのHashを取得する方法は?
-
[解決済み】activerecordのレコードを複製する最も簡単な方法は何ですか?
-
[解決済み] Railsのdefault_scopeをオーバーライドする
-
[解決済み] Array Rails ActiveRecordで例外なくwhere IDを選択する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】なぜRuby on Railsは、http://localhost:3000 の代わりに http://0.0.0.0:3000 を使用するのですか?
-
[解決済み] AWS S3です。アクセスしようとしているバケットは、指定されたエンドポイントを使用してアドレスされている必要があります。
-
[解決済み] Ruby on rails "No route matches" (ルートに一致するものがない)。
-
[解決済み] Herokuの問題 : あなたが探しているページは存在しません。
-
[解決済み] RVMでRubyのデフォルトバージョンを設定するには?
-
[解決済み] Devise Admin Roleの追加【終了しました
-
[解決済み] railsで':remote => true'はどのように動作するのでしょうか?
-
[解決済み] rails consoleを起動するとRailsのイニシャライザーが呼ばれる?
-
[解決済み] Rspec が私のモデルクラスを認識しない。初期化されていない定数エラー
-
[解決済み] RSpecとCucumberの違いは何ですか?[クローズド]