Я нашел решение этой проблемы ...
Я использую Rails 3, и мой класс выглядит так (и проблемные методы тоже)
class Organization < ActiveRecord::Base
def self.parents
@organizations = self.find :all, :conditions => ['is_company = ? ',true]
select_choice = I18n.t("select") + " "+ I18n.t("segments.description")
@organization_parents = [select_choice]
for organization in @organizations
@organization_parents << [organization.name, organization.id]
end
return @organization_parents
end
#...
end
Мне пришлось много взломать код, чтобы узнать, что что-то не так с named_scope в строке
@organizations = self.find :all, :conditions => ['is_company = ? ',true]
Так что мне пришлось изменить его на что-то вроде
@organizations = Organization.where("is_company = ?",true)
Но это тоже было неправильно .. Поэтому я решил добавить область для этого ниже имени класса, чтобы окончательный код выглядел следующим образом:
class Organization < ActiveRecord::Base
scope :company, where("is_company = ?",true)
def self.parents
@organizations = self.company
select_choice = I18n.t("select") + " "+ I18n.t("segments.description")
@organization_parents = [select_choice]
for organization in @organizations
@organization_parents << [organization.name, organization.id]
end
return @organization_parents
end
#...
end
Итак, используя эту строку с областью действия
@organizations = self.company
это работало безупречно во всех частях кода.
Мне было интересно, является ли named_scope устаревшим при использовании методов класса или они не поддерживаются с этого момента, и выдает ошибку, а не предупреждение до
Спасибо за помощь, Лев