Следующий вызов выключит объекты порождения тестирования глубины, которые будут оттянуты в созданном порядке. Это в действительности вызовет объекты потянуть наоборот.
glDepthFunc(GL_NEVER); // Ignore depth values (Z) to cause drawing bottom to top
Быть уверенными Вы не называете это:
glEnable (GL_DEPTH_TEST); // Enables Depth Testing
Давайте поясним: у вас есть метод, определенный в модуле, и вы хотите, чтобы этот метод использовался в методе экземпляра.
class MyController < ApplicationController
include Select
# You used to call this in the class scope, we're going to move it to
# An instance scope.
#
# select_for :organization, :submenu => :general
def show # Or any action
# Now we're using this inside an instance method.
#
select_for :organization, :submenu => :general
end
end
Я собираюсь немного изменить ваш модуль. Здесь используется include
вместо extend
. extend
предназначен для добавления методов класса, а включает
его для добавления методов экземпляра:
module Select
def self.included(base)
base.class_eval do
include InstanceMethods
end
end
module InstanceMethods
def select_for(object_name, options={})
# Does some operation
self.send(:include, Selector::InstanceMethods)
end
end
end
Это даст вам метод экземпляра. Если вам нужны как методы экземпляра, так и методы класса, вы просто добавляете модуль ClassMethods и используете extend
вместо include
:
module Select
def self.included(base)
base.class_eval do
include InstanceMethods
extend ClassMethods
end
end
module InstanceMethods
def select_for(object_name, options={})
# Does some operation
self.send(:include, Selector::InstanceMethods)
end
end
module ClassMethods
def a_class_method
end
end
end
Это проясняет ситуацию? В вашем примере вы определили модуль как Select
, но включили Selector
в свой контроллер ... Я просто использовал Select
в моем коде.