Связать две модели через middlemodel в Rails 3.x - PullRequest
0 голосов
/ 18 июля 2011

Полагаю, я еще не знаю правильной терминологии, поэтому мне трудно найти правильный ответ.

Итак, я создал движок с выставкой и категорией. Я создал третью модель категоризации, чтобы назначить экспонат нескольким категориям. У этого есть только вещественный идентификатор и идентификатор категории.

Что я хочу сделать, так это создать страницу для каждой категории, поэтому я назначаю экспонат для категории новостей, чтобы отображать его на странице «Новости», а для категории «Фотографии» - в «Фотографиях». и т. д. Я предполагаю, что это конфигурация маршрутизации, но я еще не получил ее (однако, пожалуйста, дайте мне знать, если это действительно конфигурация маршрутизации)

Моя проблема в том, как получить поля из разных моделей только с одного контроллера. Что у меня есть:

class Categorization < ActiveRecord::Base
  belongs_to :exhibit
  belongs_to :category
end

class Category < ActiveRecord::Base
  has_many :categorizations
  has_many :exhibits, :through => :categorizations
  acts_as_indexed :fields => [:title]
  validates :title, :presence => true, :uniqueness => true 
end

class Exhibit < ActiveRecord::Base
  has_many :categorizations
  has_many :categories, :through => :categorizations, :source => :category
  acts_as_indexed :fields => [:title, :bulb]
  validates :title, :presence => true, :uniqueness => true
  belongs_to :foto, :class_name => 'Image'
end

Как мне получить :foto из Exhibit, который принадлежит :category =>"News"?

Я попытался добавить scope :news, where(['category_id="1"']) в Categorization модель, и я могу получить Categorization.news, но как мне связать Categorization.exhibit_id с фотографией этого экспоната (думаю, это Exhibit.foto)?

Я не знаю с чего начать ...

Спасибо всем ...

Петрос

1 Ответ

1 голос
/ 19 июля 2011

Я бы попробовал это в консоли:

Categorization.news.first.exhibit.foto    

Посмотрите, не даст ли это вам необходимый объект Image.Дело в том, что у новостей есть несколько возможных экспонатов.

...