У меня есть класс скелета:
class Foo
def bar
# returns some sort of array
end
end
но как добавить метод 'writer' в 'bar', чтобы включить поведение толчка Array #?
Foo.new.bar<<['Smile']
_.bar #=> ['Smile']
Редакция:
Я должен расширить свой вопрос дальше.
Есть два класса. Foo и Bar, во многом как отношение ActiveRecord has_many, где Foo has_many Bars
Но я на самом деле храню идентификаторы Bar внутри метода Foo. Я называю этот метод bar_ids
so @foo = Foo.new (: bar_ids => [1,2,3])
Как вы можете себе представить, если я когда-нибудь захочу посмотреть, что принадлежит Bars @foo, я должен сделать что-то вроде Bar.where (: id => @ foo.bar_ids)
Поэтому я решил создать другой метод с именем bar, чтобы сделать именно это.
класс фу
# ...
Def Bar
Bar.where (: id => bar_ids)
конец
конец
Это сработало. теперь я могу сделать @ foo.bar # => все бары, принадлежащие @ foo
Теперь я также хочу использовать такой метод push, как ассоциации ActiveRecord, просто чтобы вырезать тип "id" при связывании другого объекта bar с объектом foo
В настоящее время это работает:
@ foo.bar_ids << Bar.new.id
@ Foo.save </p>
Но я хочу:
@ foo.bar << Bar.new #, где будет добавлен идентификатор нового бара в методе bar_ids @foo
@ Foo.save </p>
Спасибо за вашу помощь, я очень ценю ваши мысли по этому поводу!