Синтаксис 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
на всех.