أين هو مكان جيد لطريقة شائعة الاستخدام ... في القضبان
-
21-09-2019 - |
سؤال
لدي طريقة بدأت في استخدامها في نماذج متعددة لـ WebScrapping ، أين هو أفضل مكان للحفاظ عليه؟ هل يجب أن أضعه في application_controller ، التطبيق _helper؟ لست متأكدًا من أين هو المكان الجيد لوضعه على نماذج متعددة لاستخدامه؟
def self.retryable(options = {}, &block)
opts = { :tries => 1, :on => Exception }.merge(options)
retry_exception, retries = opts[:on], opts[:tries]
begin
return yield
rescue retry_exception
retry if (retries -= 1) > 0
end
yield
end
المحلول
ضع Retry.rb في lib/
module Retryable
extend self
def retryable(options = {}, &block) # no self required
...
end
end
استخدمه:
Retryable.retryable { ... }
أو بما في ذلك مساحة الاسم:
include Retryable
retryable { ... }
نصائح أخرى
يمكنك إنشاء وحدة نمطية. مثال من الوحش تغير المشروع: (غالبًا ما أنظر في مشاريع أخرى كيف يحلون مشاكل محددة)
# app/models/user/editable.rb
module User::Editable
def editable_by?(user, is_moderator = nil)
is_moderator = user.moderator_of?(forum) if is_moderator.nil?
user && (user.id == user_id || is_moderator)
end
end
وفي النماذج:
# app/models/post.rb
class Post < ActiveRecord::Base
include User::Editable
# ...
end
# app/models/topic.rb
class Topic < ActiveRecord::Base
include User::Editable
# ...
end
لا تنتمي إلى StackOverflow