Come di Rails 3.1 la sintassi è semplificato un po 'per ActiveSupport: : preoccupazione:
ora che è possibile fare
require 'active_support/concern'
module M
extend ActiveSupport::Concern
included do
scope :disabled, where(:disabled => true)
end
module ClassMethods
...
end
end
ActiveSupport :: Preoccupazione spazza anche nelle dipendenze del modulo incluso, here is the documentation
[aggiornamento, rivolgendosi di aceofbassgreg commento]
The Rails 3.1 e successivamente ActiveSupport :: La preoccupazione permette un include metodi di istanza del modulo da inserire direttamente , in modo che non sia necessario creare un modulo InstanceMethods all'interno del modulo incluso. Inoltre, in Rails 3.1 e versioni successive non è più necessario includere M :: InstanceMethods ed estendere M :: ClassMethods. Così possiamo avere codice più semplice in questo modo:
require 'active_support/concern'
module M
extend ActiveSupport::Concern
# foo will be an instance method when M is "include"'d in another class
def foo
"bar"
end
module ClassMethods
# the baz method will be included as a class method on any class that "include"s M
def baz
"qux"
end
end
end
class Test
# this is all that is required! It's a beautiful thing!
include M
end
Test.new.foo # ->"bar"
Test.baz # -> "qux"
fonte
2013-01-07 23:13:50
La convalida e la relazione possono essere definite in questo modo? – CantGetANick
Non posso dire 100%, ma non riesco a pensare perché no. –
Yap, e funziona. Grazie per l'esempio. – CantGetANick