Доступ к ApplicationHelper из модели User.rb - PullRequest
3 голосов
/ 17 декабря 2011

Вот простой код, который не работает:

module ApplicationHelper
  def industries
    industries = ['Agriculture','Food', etc.]
  end
end

class User < ActiveRecord::Base
  include ApplicationHelper
  validates_inclusion_of :industries, :in => ApplicationHelper.industries
  ...
end

Этот код завершается ошибкой, когда пользовательское действие запускается с undefined method 'industries'.Знаете ли вы, как я могу правильно сослаться на помощника (или, предпочтительно, только на отрасли)?


Редактировать

Основываясь на коде ответа Маурисио ниже, как INDUSTRIESдоступ к контроллеру и представлению?У меня есть реальная проблема с тем, чтобы сделать отрасли доступными везде, но это действительно должно быть для моего приложения.

1 Ответ

7 голосов
/ 17 декабря 2011

Вы должны никогда делать что-то подобное.ApplicationHelper не должен быть включен в модель.Лучшее решение было бы:

class User < ActiveRecord::Base
    INDUSTRIES = ['Agriculture','Food']
    validates_inclusion_of :industries, :in => INDUSTRIES
end

module ApplicationHelper
    def industries
        User::INDUSTRIES
    end
end

И теперь вы сделали это простым и приятным способом.

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

Везде, где вам нужноДоступ к отраслям, которые вы должны использовать:

User::INDUSTRIES

И это все.

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