Я называю этот метод (также с вспомогательным методом, подробно описанным ниже), определенный в модели User.rb
def get_random_items
return nil unless groups_as_member
if groups_as_member == 1
assignments = groups_as_member.assignments.limit(5)
random_items = Post.rand_by_post(assignments)
end
random_groups = groups_as_member.sort_by{rand}.slice(0,5)
random_items = Array.new
i=0
return unless random_groups
until i == 10 do
random_groups.each do |group|
assignments = group.assignments.limit(5)
if y = Post.rand_by_post(assignments)
random_items << y
i+=1
if random_items == 5
return random_items
end
else
return random_items
end
end
end
return random_items
end
вспомогательный метод rand_by_post
в Post.rb
def self.rand_by_post(assignments)
find_by_id(assignments.rand.post_id)
end
в пользовательском контроллере show
действие:
def show
@public_groups = Group.public
@groups_member = @user.groups_as_member
@groups_as_owner = @user.groups_as_owner
@random_items = @user.get_random_items
end
Когда я закомментирую вызов в действии пользовательского шоу, пользовательское шоу отлично работает на моем сервере разработки и производства. Но когда я пытаюсь использовать метод, серверы просто зависают, ничего не делая. Я не могу найти никаких ошибок в журналах сервера или журналах heroku. Мои навыки написания тестов довольно ограничены, и у меня возникают проблемы при написании одного из них для всего метода.
Кто-нибудь может определить проблему?