2011-01-25 4 views
0

У меня естьКак заблокировать связанную с моделью коллекцию?

class Foo 
    has_many :widgets 
end 

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

@widgets_to_work_with = Widget.find_all_by_foo_id(@foo.id, :lock => true) 

С более хорошим кодом, что-то вроде:

@widgets_to_work_with = @foo.widgets(:lock => true) 

Что лучший способ сделать это?

ответ

1

вы можете переопределить виджеты метода в Foo ActiveRecord или, безопаснее, добавить другой метод a.e.

# in Foo.rb 
#... 
def self.locked_widgets 
    Widget.find_all_by_foo_id(self.id, :lock => true) 
end 

надежда может быть полезным

+0

Хорошо, так что я предполагаю, что это не пройдоха способ сделать это :) –

Смежные вопросы