принадлежит_ нескольким моделям - PullRequest
1 голос
/ 15 июня 2010

Я нуб Rails и у меня есть вопрос. У меня есть агрегатор каналов, который организован по этой общей концепции:

Категория корма (книги, электроника и т. Д.) Раздел сайта фида (домашняя страница, страница с книгами и т. Д.) Кормить (сам корм) Feed Feed

Итак:

class Category < ActiveRecord::Base
  has_many :feeds
  has_many :feed_entries, :through => :feeds, :limit => 5
  validates_presence_of :name
  attr_accessible :name, :id
end

class Section < ActiveRecord::Base
  has_many :feeds
  has_many :feed_entries, :through => :feeds, :limit => 5
  attr_accessible :name, :id
end

class Feed < ActiveRecord::Base
  belongs_to :categories
  belongs_to :sections
  has_many :feed_entries
  validates_presence_of :name, :feed_url
  attr_accessible :name, :feed_url, :category_id, :section_id
end

class FeedEntry < ActiveRecord::Base
  belongs_to :feed
  belongs_to :category
  belongs_to :section
  validates_presence_of :title, :url
end

Имеет смысл? Теперь, на моей странице указателя, я хочу сказать: если вы находитесь в разделе «Книги категорий» в разделе «Домашняя страница», дайте мне записи фидов, сгруппированные по каналам ...

В моем контроллере:

def index
    @section = Section.find_by_name("Home Page")
    @books = Category.find_by_name("Books")
end

На мой взгляд:

<%= render :partial => 'feed_list',
           :locals => {:feed_group => @books.feeds} 
-%>

В этом фрагменте будет показана разметка для каждой записи фида в коллекции фидов @books. Теперь мне нужно как-то объединить @books с @section ...

Я пробовал это:

<%= render :partial => 'feed_list',
           :locals => {:feed_group => @books.feeds(:section_id => @section.id)} 
-%>

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

Имеет смысл? Любой совет?

Спасибо!

1 Ответ

0 голосов
/ 15 июня 2010

Попробуйте что-то вроде этого:

:locals => {:feed_group => @books.feeds.all(:conditions => {:section_id => @section.id})}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...