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

Schreibe einen Kommentar