Синтаксис Ruby для поиска одинаковых значений внешнего ключа в разных таблицах

У меня есть таблица (горох), содержащая несколько внешних ключей в каждой строке и перечисляя их в виде индекса. У меня есть другие таблицы (морковь), которые содержат те же внешние ключи.

Из первой таблицы (горох) я хочу найти строку в другой таблице (морковь), которая содержит те же значения внешнего ключа, поместите ее в переменную (@p) для использования внутри условного оператора, который будет отображаться в индексе. вид на первый стол (горох). То, что я создал до сих пор, не выдает ошибку, поэтому ее трудно диагностировать.

Я пытался изменить операнд, но безуспешно.

Pea Model (Добавление метода в Model, потому что нет изменений в базе данных)

  def pea
    @p = Carrot.find({ :fk_id => 'pea.fk_id', :fk2_id => 'pea.fk2_id' })
  end

Соответствующее представление индекса гороха (внутри каждого цикла)

<% if @p.present?  %>
 <p>Say This</p>
<% else %>
 <p>Say That</p>
<% end %>

Как только я найду строку, которая соответствует двум внешним ключам (fk_id & fk2_id), я узнаю, что совпадение уникально. Другими словами, в моркови будет только одна строка, содержащая два одинаковых значения внешнего ключа в горохе.

Я чувствую, что упускаю что-то действительно очевидное. Я искал похожие вопросы и не могу достаточно соответствовать этому сценарию, чтобы вместе взломать решение.

Pea belongs_to :Carrot
Carrot has_one :Pea

Любая помощь в правильном направлении приветствуется.

RoR - Rails 4.2.5.2 / ruby ​​2.3.1p112 (ревизия 2016-04-26, 54768) [x86_64-darwin14], Sqlite3 (dev), Postgresl (Prod), Mac

1 ответ

find принимает только primary_key в качестве аргумента. использование find_by для поиска по другим атрибутам.

def pea
  @p = Carrot.find_by(fk_id: 'pea.fk_id', fk2_id: 'pea.fk2_id')
end

Также find выдает ошибку, если ничего не находит, поэтому, если вы не видите ошибок, есть вероятность, что вы не вызвали метод pea на всех.

Другие вопросы по тегам