Избранные предложения с рельсами - PullRequest
1 голос
/ 27 августа 2011

У меня есть таблица предложений и таблица избранного с offer_id.Когда я отображаю все предложения на экране, я хочу отобразить «желтую звезду» в избранных предложениях

. Я получаю избранное в виде:

  scope :in_favorites, lambda { |user_id|
    favorites = Favorite.where(:user_id => user_id).map(&:offer_id)
    if favorites.size > 0
      where :id => favorites
    end
  }

Как проверить, существует ли предложение в избранном

1 Ответ

2 голосов
/ 28 августа 2011

Я не знаю, правильно ли я понял ваш вопрос, но вы сможете проверить, находится ли предложение в избранном у пользователя с:

# Example with the user n°1
Offer.in_favorites(1).include?(offer)

Другой способ моделирования ваших предложений -использовать has_many :through ассоциацию:

class User < ActiveRecord::Base
    has_many :favorites
    has_many :favorite_offers, :through => :favorites, :source => :offer
end

Затем вы можете сделать:

# user is an instance of User
user.favorite_offers.include?(offer)

# same thing, only SQL. A bit less readable, but doesn't load all the user's favorites
!user.favorite_offers.where(:id => offer.id).empty?

Надеюсь, это поможет.

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