В этом случае определенный метод должен вызываться на уровне класса, например:
class Foo
include ActsAsVotable
acts_as_votable
end
В Ruby есть эта замечательная / ужасная (зависит от того, кого вы спрашиваете) функция, которую вы можете динамическиопределить класс.Здесь метод acts_as_votable
сначала вызывает has_many
(что добавляет несколько методов к классу Foo
), а затем добавляет метод cast_vote
к классу Foo
через include InstanceMethods
.
* 1011.* Итак, вы получите эквивалент:
class Foo
# Will add further methods.
has_many :votes, :as => :votable, :dependent => :delete_all
# include InstanceMethods
def cast_vote( vote )
Vote.create( :votable => self, :up => vote == :up )
end
end