Кажется, моя таблица соединений не работает - PullRequest
0 голосов
/ 26 июля 2011

мои модели:

class CardSignup < ActiveRecord::Base
  has_one :conversion
  has_one :card_signup, :through => :conversion

class User < ActiveRecord::Base      
  has_many :conversions
  has_many :card_signups, :through => :conversions

class Conversion < ActiveRecord::Base
  belongs_to :card_signup
  belongs_to :user
end

моя миграция:

class AddCardSignupConversions < ActiveRecord::Migration
  def self.up
    create_table (:conversions, :id => false) do |t|
      t.integer :user_id
      t.integer :card_signup_id
    end
  end

  def self.down
    drop_table :conversions
  end
end

Теперь я могу успешно найти:

User.find(x).conversions
CardSignup.find(x).conversion

Однако я не могу добавлять объекты в эти ссылки. Не уверен почему .. Я попробовал это:

User.last.conversions << CardSignup.last

Который вернулся:

ActiveRecord::AssociationTypeMismatch: Conversion(#2183228680) expected, got CardSignup(#2183113520)

Почему это?

Ответы [ 2 ]

2 голосов
/ 26 июля 2011

Почему вы объявили ключи как строки в таблице преобразований?Обычно используются целые числа.Это может быть причиной проблемы

t.string :user_idt.string :card_signup_id

Редактировать: Вы также пытаетесь добавить CardSignup к ассоциации конверсий.Это определенно не будет работать.Кстати: ошибка говорит то же самое.

0 голосов
/ 26 июля 2011

Хорошо, я понял!

class CardSignup < ActiveRecord::Base
  # add_column :card_signups, :converted_by, :integer   # Add this to your migration
  belongs_to :converted_by, :class_name => "User"

class User < ActiveRecord::Base
  has_many :conversions, :foreign_key => :converted_by, :class_name => "CardSignup"

Это позволяет мне иметь собственное уникальное имя для отношений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...