Что вы делаете это хорошо, pluck(:rel)
всегда будет возвращать массив. Если вы знаете, вы хотите только один отн, просто сделать
event_rel = current_user.events(:e, :rel).where(id: event_id).limit(1).pluck(:rel).first
Если вы используете мастер ветвь от GitHub, вы можете использовать first_rel_to
метод, который (наряду с match_to
) меняется так, как я использую драгоценный камень в последнее время.
event_rel = current_user.events.first_rel_to(event_id)
Возможность придать ему идентификатор был добавлен пару дней назад, он не будет работать, если вы тянете из Rubygems. Версия метода в версии 3.0.4 не принимает идентификатор, он принимает только полный узел. Если у вас загружен узел, вы можете сделать event_rel = current_user.events.first_rel_to(event)
в выпущенной версии.
Если вы не хотите использовать щипку, вы можете сделать event_rel = current_user.events.where(id: event_id). limit(1).each_rel.first
. Просто имейте в виду, что это приведет к возврату каждого rel между этими двумя узлами в Ruby, если вы опустите limit(1)
, поэтому не используйте его, если не знаете, что только получите его обратно. Обычно я добавляю limit(1)
, когда я это делаю, даже если я только подумаю, что я вернусь обратно, потому что мне нравится быть в безопасности.
Предлагаю вам указать свой Gemfile на самую последнюю фиксацию в Github, просто прочитайте новый раздел в вики об изменениях в 4.0. Он стабилен, и новые функции настолько классные.
мы не смогли заставить его работать с вышеперечисленным методом, но с новейшим обновлением к драгоценному камню, мы можем использовать 'event_rel = current_user.events.first_rel_to (event)' – Clam