gpt4 book ai didi

ruby-on-rails - Rails 4 ActiveRecord::关联类型不匹配

转载 作者:数据小太阳 更新时间:2023-10-29 07:50:02 31 4
gpt4 key购买 nike

我正在尝试将记录添加到联接表 user_logs,该表联接 user_actionsusers。但是,当我尝试使用以下代码添加项目时,我收到以下错误消息。为什么会出现此错误?我在下面包含了模型和架构以供引用。

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

关于ruby-on-rails - Rails 4 ActiveRecord::关联类型不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21395970/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com