Один из возможных способов - поместить методы общего доступа в module
, например так (RAILS_ROOT/lib/shared_methods.rb
)
module SharedMethods
def is_public?
# your code
end
end
Затем вам необходимо включить этот модуль в каждую модель, которая должна иметь эти методы (т.е. app/models/your_model.rb
)
class YourModel < ActiveRecord::Base
include SharedMethods
end
ОБНОВЛЕНИЕ :
В Rails 4 есть новый способ сделать это.Вы должны поместить общий код, как это, в app/models/concerns
вместо lib
Также вы можете добавить методы класса и выполнить код при включении, как этот
module SharedMethods
extend ActiveSupport::Concern
included do
scope :public, -> { where(…) }
end
def is_public?
# your code
end
module ClassMethods
def find_all_public
where #some condition
end
end
end