У меня есть столбец с именем ticker
на моей PortStock
модели.У меня есть настройка friendly_id, чтобы я мог использовать тщетные URL-адреса, т. Е. Он может использовать тикер в качестве идентификатора, а не сам идентификатор.
Проблема заключается в том, что у пользователя может быть много port_stock
объектов, которые имеют одинаковые ticker
значение.Но friendly_id
не возвращает их все в стандартном вызове friendly.find
.
Например:
[15] pry(main)> cac = cu.port_stocks.friendly.find("CAC")
PortStock Load (3.1ms) SELECT "port_stocks".* FROM "port_stocks" INNER JOIN "portfolios" ON "port_stocks"."portfolio_id" = "portfolios"."id" WHERE "portfolios"."user_id" = $1 AND "port_stocks"."ticker" = $2 LIMIT $3 [["user_id", 2], ["ticker", "CAC"], ["LIMIT", 1]]
=> #<PortStock:0x00007ff143b53768
id: 14,
portfolio_id: 1,
stock_id: 58,
volume: 250,
transaction_price: 8.0,
current_price: 8.0,
action: "sell",
position: "closed",
ticker: "CAC">
Однако, если я запрашиваю все port_stocks
с тем жеticker
значение, я получаю 6 объектов:
[16] pry(main)> cu.port_stocks.where(ticker: "CAC").count
(3.7ms) SELECT COUNT(*) FROM "port_stocks" INNER JOIN "portfolios" ON "port_stocks"."portfolio_id" = "portfolios"."id" WHERE "portfolios"."user_id" = $1 AND "port_stocks"."ticker" = $2 [["user_id", 2], ["ticker", "CAC"]]
=> 6
[17] pry(main)> cu.port_stocks.where(ticker: "CAC")
PortStock Load (1.1ms) SELECT "port_stocks".* FROM "port_stocks" INNER JOIN "portfolios" ON "port_stocks"."portfolio_id" = "portfolios"."id" WHERE "portfolios"."user_id" = $1 AND "port_stocks"."ticker" = $2 [["user_id", 2], ["ticker", "CAC"]]
=> [#<PortStock:0x00007ff143b33e68
id: 14,
portfolio_id: 1,
stock_id: 58,
volume: 250,
transaction_price: 8.0,
current_price: 8.0,
action: "sell",
position: "closed",
ticker: "CAC">,
#<PortStock:0x00007ff143b33d28
id: 2,
portfolio_id: 1,
stock_id: 58,
volume: 250,
transaction_price: 7.4,
current_price: 8.0,
action: "buy",
position: "open",
ticker: "CAC">,
#<PortStock:0x00007ff143b33be8
id: 15,
portfolio_id: 1,
stock_id: 58,
volume: 30,
transaction_price: 7.95,
current_price: 8.0,
action: "sell",
position: "closed",
ticker: "CAC">,
#<PortStock:0x00007ff143b33aa8
id: 3,
portfolio_id: 1,
stock_id: 58,
volume: 45,
transaction_price: 7.8,
current_price: 8.0,
action: "buy",
position: "open",
ticker: "CAC">,
#<PortStock:0x00007ff143b33968
id: 16,
portfolio_id: 1,
stock_id: 58,
volume: 125,
transaction_price: 7.9,
current_price: 8.0,
action: "sell",
position: "closed",
ticker: "CAC">,
#<PortStock:0x00007ff143b33828
id: 10,
portfolio_id: 1,
stock_id: 58,
volume: 125,
transaction_price: 6.5,
current_price: 8.0,
action: "buy",
position: "open",
ticker: "CAC">]
Что может быть причиной этого?
Разве friendly_id
не должен возвращать все объекты, которые соответствуют этому запросу?