Имеет много: через ассоциацию не найдено - PullRequest
0 голосов
/ 29 февраля 2012

У меня есть две модели, к которым могут быть добавлены теги.

  • Player
  • Ticket

, и у меня есть модель Tag, котораяпринадлежит к обоим, поэтому у меня есть две модели соединения

  • tag_ticket
  • tag_player

Я получаю Could not find the association :tag_tickets in model Ticket ошибку, но моя ассоциация там.

class Ticket < ActiveRecord::Base
  has_many :tag_tickets
  has_many :tags, :through => :tag_tickets
end

Я просто фокусируюсь на модели Ticket, но модель плеера должна выглядеть аналогично.

Это моя миграция для TagTicket

class CreateTagTickets < ActiveRecord::Migration
  def change
    create_table :tag_tickets do |t|
      t.integer :ticket_id
      t.integer :tag_id

      t.timestamps
    end
  end
end

1 Ответ

1 голос
/ 29 февраля 2012

Сначала необходимо указать: tag_tickets объединиться так:

class Ticket < ActiveRecord::Base
  has_many :tag_tickets
  has_many :tags, :through => :tag_tickets
end

Вам также необходимо указать соединения в вашей TagTicket модели:

class TagTicket < ActiveRecored::Base
  belongs_to :ticket
  belongs_to :tag
end

В качестве альтернативы, вы можете пропустить все это и использовать соединение habtm (рекомендуется, только если соединение tag_tickets действительно только используется как соединение и не имеет первичного ключа для себя). В этом случае у вас не будет модели TagTicket (только таблица tag_tickets), и модель Ticket будет выглядеть следующим образом:

class Ticket < ActiveRecord::Base
  has_and_belongs_to_many :tags
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...