Rails: Как мне определить расширение ассоциации в модуле, который включается в мою модель AR?

У меня есть модуль Blockable , который содержит ассоциации и методы, которые должны быть включены в несколько других ActiveRecord классы.

Соответствующий код:

module Blockable
  def self.included(base)
    base.has_many :blocks
  end
end

Я хочу добавить расширение ассоциации. Обычный синтаксис (т.е. когда я не определяю ассоциацию в модуле) выглядит следующим образом:

# definition in Model < ActiveRecord::Base
has_many :blocks do
  def method_name
    ... code ...
  end
end

# usage
Model.first.blocks.method_name

Этот синтаксис не работает при использовании в модуле, который включен в модель AR. Я получаю неопределенный метод 'method_name' для # .

Есть идеи, как мне определить расширение ассоциации в модуле для включения в другие классы AR?

5
задан Nakilon 4 February 2011 в 02:39
поделиться