Rails 5 - Доступ к другому столбцу, чем внешний ключ в ассоциированной таблице - PullRequest
0 голосов
/ 14 января 2019

У меня есть 3 модели:

class Sneaker < ApplicationRecord 
    has_many :stocks
    has_many :sellers, through: :stocks
end


class Seller < ApplicationRecord
    has_many :stocks
    has_many :sneakers, through: :stocks
end


class Stock < ApplicationRecord
    belongs_to :sneaker
    belongs_to :seller
end

У меня есть 3 таблицы:

  • кроссовки: id / марка / цвет
  • продавцы: id / имя / страна /
  • акций: id / sneaker_id / seller_id / old_price / price / offer_link

В представлении я пытаюсь отобразить список продавцов и их запасы кроссовок (id кроссовка в параметрах [: id])

В моем контроллере у меня есть это:

@sellers = Seller.joins(:stocks).where(stocks: { sneaker_id: params[:id] })

Но у меня есть доступ только к внешнему ключу (sneaker_id) в таблице акций, и я хочу получить доступ к другим столбцам (old_price, price, offer_link).

Я не нахожу, как написать правильный запрос ... (может быть, присоединения - не самый лучший способ?)

1 Ответ

0 голосов
/ 14 января 2019

В Rails, joins используется только для фильтрации, но не для доступа к связанным записям. Чтобы включить связанные записи в свои результаты, используйте includes.

@sellers = Seller.includes(:stocks).where(stocks: { sneaker_id: params[:id] })

Затем вы можете получить доступ к акциям, используя методы, к которым вы привыкли.

@sellers.first.stocks.first.old_price

В этой статье приведены некоторые полезные сведения и сведения о производительности для includes.

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