доступ к предыдущим методам в цепочке (Ruby (on Rails)) - PullRequest
0 голосов
/ 31 января 2011

Допустим, у меня есть занятия для сотрудников, менеджеров и компаний. Они наследуются от ActiveRecord и все связаны, как и следовало ожидать.

У меня есть два экземпляра класса Employee, bob и jane. Они оба работают в одной компании, но у них разные менеджеры.

Я хочу иметь возможность звонить bob.company.x или jane.company.x и получать разные результаты, потому что, хотя они работают в одной компании, у них разные менеджеры. Существуют и другие ограничения, которые мешают мне просто определить x как метод для сотрудников и вызвать bob.company_x, что, как я понимаю, будет проще в этом примере.

Есть ли какой-нибудь способ, которым я могу узнать, в пределах определения моего метода для x, какой сотрудник запустил эту цепочку методов?

1 Ответ

2 голосов
/ 31 января 2011

То, что вы предлагаете, не может быть сделано простым и понятным способом, и, кроме того, нелогично.

class Employee
  belongs_to :company
  belongs_to :manager
end

является единственным чистым решением. Это имеет четко определенные отношения. Эти отношения должны быть доступны в любом случае: как бы вы узнали, кто менеджер для bob?

Решение, как вы предлагаете, где вы можете написать bob.company.my_manager, не имеет смысла, потому что bob.company является его компанией, и на этом уровне (Company) больше нет знаний о bob.

Для полноты картины: фактически менеджер - это сам работник, поэтому мы бы написали это отношение немного по-другому:

class Employee
  belongs_to :manager, :class => Employee
end

(а в таблицу employees необходимо добавить поле manager_id).

Надеюсь, это поможет.

...