Как да накарате нетърпелив зареден условен да бъде мързелив зареждане по-късно с ActiveRecord и Rails

Първо нека покажа малко код.

class User
  has_and_belongs_to_many :roles
  named_scope :employees, { :conditions => ["roles.name = 'Employee'"], :include => :roles }
end

Добре, така че по-късно в контролера исках да потърся правилно всички служители. Зададох посочения обхват, за да помогна за това с присъединяването и условното търсене. Но проблемът е в изгледа, който искам да покажа всички тези потребителски роли, но той ще покаже само ролята на служител.

Има ли все пак, че мога да кажа "user.roles" и да заредя be lazy в изгледа, след като вече съм го заредил?


person taelor    schedule 23.05.2009    source източник


Отговори (1)


Документацията за habtm (както и has_many) гласи, че можете да получите достъп до колекцията с незадължителен параметър:

колекция (force_reload = false)

Връща масив от всички свързани обекти. Връща се празен масив, ако не бъде намерен такъв.

Можете да презаредите ролите с user.roles(true).

person Ian Terrell    schedule 23.05.2009
comment
Вие, сър, сте фантастични. Никога не съм знаел, че това съществува. Предполагам, че трябваше да прочета документацията малко по-задълбочено. Благодаря за добрия отговор! - person taelor; 25.05.2009