Rails 4 ActiveRecord::AssociationTypeMismatch
Ich versuche, einen Datensatz hinzufügen, um eine join-Tabelle user_logs
verbindet user_actions
und users
. Jedoch, wenn ich versuche ein Element hinzufügen mit dem folgenden code bekomme ich die Fehlermeldung unten. Warum bin ich immer diese Fehlermeldung? Ich habe die Modelle und das schema unten für Referenz.
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)
- User-Modell
class User < ActiveRecord::Base
...
has_many :user_logs
has_many :user_actions, :through => :user_logs
end
Benutzer-Aktionen-Modell
class UserAction < ActiveRecord::Base
has_many :user_logs
has_many :users, :through => :user_logs
end
Benutzer Anmeldet Modell
class UserLog < ActiveRecord::Base
belongs_to :user
belongs_to :user_action
end
Schema
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
Ich habe die Sie sicher, dass
cache_classes
war true
im config/environments/test.rb
: stackoverflow.com/questions/5954690/.... Dieser hat das problem nicht beheben.InformationsquelleAutor evanvee | 2014-01-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Sie hinzuzufügen versuchen
UserAction
ObjektUserLog
Sammlung, die auf jeden Fall werfen Sie einenTypeMismatch
Fehler. Versuchen Sie dies:InformationsquelleAutor shinnyx