[解決済み] Rails 4 ActiveRecord::AssociationTypeMismatchについて
2022-02-25 02:09:26
質問
結合テーブルにレコードを追加しようとしています。
user_logs
を結合する
user_actions
と
users
. しかし、以下のコードで項目を追加しようとすると、以下のようなエラーメッセージが表示されます。なぜこのようなエラーが発生するのでしょうか?参考までに、以下にモデルとスキーマを載せておきます。
2.0.0-p353 :001 > user = User.first
2.0.0-p353 :002 > action = UserAction.first
2.0.0-p353 :003 > user.user_logs
UserLog Load (0.3ms) SELECT `user_logs`.* FROM `user_logs` WHERE `user_logs`.`user_id` = 1
=> #<ActiveRecord::Associations::CollectionProxy []>
2.0.0-p353 :004 > user.user_logs << action
(0.3ms) BEGIN
(0.2ms) ROLLBACK
ActiveRecord::AssociationTypeMismatch: UserLog(#2156995120) expected, got UserAction(#2177269140)
ユーザーモデル
class User < ActiveRecord::Base
...
has_many :user_logs
has_many :user_actions, :through => :user_logs
end
ユーザーアクションモデル
class UserAction < ActiveRecord::Base
has_many :user_logs
has_many :users, :through => :user_logs
end
ユーザーログ・モデル
class UserLog < ActiveRecord::Base
belongs_to :user
belongs_to :user_action
end
スキーマ
create_table "user_actions", force: true do |t|
t.string "action", limit: 40, default: "", null: false
t.datetime "created_at"
t.datetime "updated_at"
end
add_index "user_actions", ["action"], name: "index_user_actions_on_action", unique: true, using: :btree
create_table "user_logs", force: true do |t|
t.integer "user_id"
t.integer "user_action_id"
t.datetime "created_at"
t.datetime "updated_at"
end
解決方法は?
を追加しようとしています。
UserAction
オブジェクトを
UserLog
を投げます。
TypeMismatch
エラーが発生します。代わりにこれを試してみてください。
user = User.first
action = UserAction.first
user.user_actions << action
user.save
関連
-
[解決済み】Rails。Ruby on Railsの移行でデータベースカラムの名前を変更するにはどうすればよいですか?
-
[解決済み] AWS S3です。アクセスしようとしているバケットは、指定されたエンドポイントを使用してアドレスされている必要があります。
-
[解決済み] Railsマイグレーションを利用してカラムをドロップする方法
-
[解決済み] Rubyのクラスで未初期化の定数エラーが発生する
-
[解決済み] Ruby: public static メソッドを作るには?
-
[解決済み] バリデーションなしで属性を更新する方法
-
[解決済み] "render :nothing => true" は空のプレーンテキストファイルを返すのですか?
-
[解決済み] railsでcheck_boxをcheckedにする方法は?
-
[解決済み] Ruby on Railsで現在の絶対URLを取得するにはどうすればよいですか?
-
[解決済み】Railsの認証トークンを理解する
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】警告:定数 ::Fixnum は非推奨 新しいモデルを生成するとき
-
[解決済み] gemのインストールができない - gemネイティブ拡張の構築に失敗 - そのようなファイルをロードできない -- mkmf (LoadError)
-
[解決済み] Rubyで変数をインクリメントする [重複]。
-
[解決済み] rspec 3 - クラスメソッドをスタブ化する
-
[解決済み] Errno::EACCESS: パーミッションが拒否された @ dir_s_mkdir
-
[解決済み] Paramが無いか、値が空である。ParameterMissing in ResultsController#update
-
[解決済み] Ruby:Rubyの配列にinclude.の反対はある?
-
[解決済み] "render :nothing => true" は空のプレーンテキストファイルを返すのですか?
-
[解決済み] Heroku: 既存のrailsアプリにseeds.rbをプッシュする方法?
-
[解決済み] railsでcheck_boxをcheckedにする方法は?