В моем приложении у меня есть группы, которые по существу являются тегами, которые могут быть назначены различным моделям через полиморфные отношения. В модели группы у меня есть:контроллер не делает, что он должен?
def get_members_of(klass)
self.group_memberships.delete_if {|gm| gm.groupable_type != klass}.map{|g| g.groupable}
end
Так что, если я сделал:
group.group_memberships
Я хотел бы получить все объекты групповой группы. Однако, если я хочу, чтобы ограничить его только объекты, которые являются экземплярами модели А я хотел бы сделать:
group.get_members_of(A)
В консоли это работает именно так, как это должно быть. Тем не менее, я получаю некоторое неожиданное поведение в моем контроллере:
def show
params[:studies1] = @group.get_members_of('Study').length
@studies = @group.get_members_of('Study')
params[:studies2] = @studies.length
@studies = @group.group_memberships.delete_if {|gm| gm.groupable_type != "Study"}.map{|g| g.groupable}
params[:studies3] = @studies.length
end
Как и ожидалось Params [: studies1] == 1, но исследований2 и 3 == 0. Я уверен, что не хватает какой-то мелочь. ..
Почему вы настройки Params в контроллере? – jonnii
Грязный способ увидеть значения каждой переменной, например, printf. – LDK
Простой способ отладки - использовать logger.error, а затем tail -f ваш журнал. –