Лямбда-условие для связанного объекта в Ruby on Rails - PullRequest
1 голос
/ 07 июня 2011

Я пытаюсь написать именованную область в классе для Invoice.Объекты счетов-фактур имеют ссылку на объект Job.Объекты вакансий имеют ссылку на объект Компании.

class Invoice < ActiveRecord::Base
belongs_to :job

class Job < ActiveRecord::Base
belongs_to :company

Я хочу, чтобы область действия основывалась на том, соответствует ли идентификатор Компании, связанный с заданием, переданному значению.

Я пытаюсь использовать его как нечто подобное

named_scope :job_company, lambda{|job_company_id| {:conditions => {job.company.id => job_company_id}}}

Это дает мне сообщение об ошибке

неопределенная локальная переменная или метод `job 'для #Class: 0x103239160

Как мне написатьлямбда-функция для этого?

Примечание: я использую Ruby 1.8.7 с Rails 2.3.5

1 Ответ

3 голосов
/ 07 июня 2011

named_scope - это в основном просто метод класса, поэтому внутри лямбда-области видимости self является Invoice. Нет экземпляра задания или локальной переменной, следовательно, ошибка.

Но это должно сработать:

named_scope :job_company, lambda{|job_company_id| { :joins => { :job => :company }, :conditions => ["jobs.company_id = ?", job_company_id] }}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...