То, что вы делаете, в порядке, pluck(:rel)
всегда будет возвращать массив. Если вы знаете, что вам нужен только один rel, просто сделайте
event_rel = current_user.events(:e, :rel).where(id: event_id).limit(1).pluck(:rel).first
Если вы используете ветку master из 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
. Просто имейте в виду, что это вернет все отношения между этими двумя узлами в Ruby, если вы опустите limit(1)
, поэтому не используйте его, если вы не уверены, что получите только один обратно. Я обычно добавляю limit(1)
, когда делаю это, даже если я думаю, что смогу вернуть только один rel, потому что я хочу быть в безопасности.
Я предлагаю вам указать свой Gemfile на самую последнюю фиксацию в Github, просто прочитайте новый раздел в вики об изменениях в 4.0. Это стабильно, и новые функции такие классные.
person
subvertallchris
schedule
22.11.2014