У меня есть эти таблицы:Rails 4 + ActiveRecord: как исключить некоторые записи из поиска?
users
- классический стол DEViSElistings
- пользователи создание списковlistings_exclude_users
- 2 колонки:user_id
иlisting_id
user.rb
class User
has_many :listings
end
listing.rb
class Listing
belongs_to :user
has_many :listing_excluded_users
end
listing_excluded_user.rb
class ListingExcludedUser
belongs_to :user
belongs_to :listing
end
помечать некоторые пользователи, для которых не должна быть соответствующая реклама видна и эта информация сохраняется в listings_exclude_users
.
Теперь я хотел бы запустить запрос, который будет извлекать все списки, но если подписанный пользователь, который находится в таблице listings_exclude_users
за конкретным листингом, то не извлекайте это объявление.
Я могу сделать это на виду, но я бы предпочел путь ActiveRecord. Я попытался
@listings = Listing.joins(:listing_excluded_users).where("listings.status='0' AND (listing_excluded_users.user_id != '#{current_user.id}')")
Но этот запрос ничего (пустой @listings
) не возвращается.
Благодарим вас за консультацию.
какая база данных вы используете? MySQL? Postgres? –
Я использую MySQL. – user984621
Никогда, никогда не делайте что-то вроде «... # {varname}» в фрагменте SQL. Возможно, на сей раз вы в безопасности, но в какой-то момент вы получаете инъекцию SQL. Вы должны научиться использовать параметры в инструкции SQL. – Meier