При использовании именованной области я получаю сообщение об ошибке "уровень стека слишком глубокий" - PullRequest
0 голосов
/ 16 июня 2010

Я использую ruby ​​на рельсах 2.3.8, и когда я пишу синтаксис, показанный ниже, я получаю сообщение об ошибке "Уровень стека слишком глубокий".

Модель называется Announcement и строка ошибкивыглядит так:

Tag.find(category_id).announcements.published

Где published это

named_scope :published, :conditions => "announcements.state = 'published'"

Я использую эту именованную область во многих других местах, и она отлично работает.

Что яделать неправильно?(связь между тегом и моделью объявления в порядке, потому что, если я удаляю метод ".published" из этой строки, он прекрасно работает).

РЕДАКТИРОВАТЬ:

* 1017отношения модели:
class Tagging < ActiveRecord::Base
  belongs_to :announcement
  belongs_to :tag
end

class Tag < ActiveRecord::Base
  has_many :taggings
  has_many :announcements, :through => :taggings
end

class Announcement < ActiveRecord::Base
  has_many :taggings
  has_many :tags, :through => :taggings

Ответы [ 3 ]

0 голосов
/ 16 июня 2010

Понятия не имею, в этом ли проблема, но не могли бы вы попробовать named_scope, как показано ниже, и скажите нам, сработало ли это?

named_scope :published, :conditions => "state = 'published'"
0 голосов
/ 17 июня 2010

Где вы написали названную область?

Вы должны написать это в модели объявления, и вам нужно немного ее изменить

named_scope :published, :conditions => {:state => "published"}

Я думаю, что вы написали опубликованный named_scope в другой модели, пожалуйста, исправьте меня, еслия неправ.

0 голосов
/ 16 июня 2010

Уровень стека слишком глубокий обычно возникает, когда рельсы рекурсивно обращаются к тому же методу / функции.

Попробуйте изменить свое состояние и проверьте еще раз, потому что я думаю, что могут быть конфликты published слово

Хороший способ отладки - начать с

Tag.find(category_id)

тогда, если нет ошибок

Tag.find(category_id).announcements

а ты все в порядке тогда

Tag.find(category_id).announcements.published

тем самым вы найдете, где именно проблема

ура

Sameera

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