Rails: найдите и используйте номер id из контроллера diff - PullRequest
0 голосов
/ 26 сентября 2011

Я хочу извлечь номер идентификатора уникальной записи, которая находится в другом контроллере, как целое число, поэтому я могу сохранить его как часть новой записи в новом контроллере.

Кажется, я не могу получить идентификатор, чтобы сбросить его атрибут 'Array'.

Я использовал это:

class MessagesController < ApplicationController

def incoming

  a = Group.where("name = ?", name).map { |n| n.id  }
  group_number = a.id
  puts "#{group_number} is the number!"

end
Выход

всегда равен [2] или [3] или как угодно.

добавление этого, похоже, не излечивает его

group_as_int = group_number.to_i

Наконец, причина, по которой я все это делаю, заключается в том, чтобы сохранить номер этой группы как новую запись в третьем контроллере, например:

Subscriber.create(:group_id => group_number, :active => "1")
or
Subscriber.create(:group_id => group_as_int, :active => "1")

Конечно, создание создает, когда я пытаюсь передать массив в функцию создания.

Мысли

Ответы [ 3 ]

3 голосов
/ 26 сентября 2011

Вы пытаетесь поместить бизнес-логику в контроллер.Попробуйте вместо этого изменить методы и поместить их в свои модели.

Кроме того, вы получите номер следующим образом:

group = Group.where("name = ?", name).first
group_number = group.id if group.present?
1 голос
/ 26 сентября 2011

Я постараюсь объяснить из вашего кода, что вы сделали не так. Первая строка:

matching_group_ids = Group.where("name = ?", name).map { |n| n.id  }

Вы назвали это a, но я предпочитаю более подробные имена. matching_group_ids теперь содержит массив идентификаторов. Чтобы получить первое значение этого массива, самое простое решение - просто написать

group_number = matching_group_ids[0]

или, более читабельно:

group_number = matching_group_ids.first

Имейте в виду: вы должны проверить, что возвращаемый массив не пустой.

Надеюсь, это поможет.

1 голос
/ 26 сентября 2011

Возможно, вы захотите попробовать .first, чтобы получить целое число из массива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...