रेलस्कास्ट ने रिफैक्टरिंग पर एक शानदार एपिसोड डाला। एक तरीका जटिल नियंत्रक तर्क को मॉडल ऑब्जेक्ट्स को दबाए रखने के बजाय सेवा ऑब्जेक्ट्स में ले जाना है। one service object में, निम्न कोड प्रयोग किया जाता है:इस रूबी विधि परिभाषा में 'नया' कीवर्ड कैसे काम करता है?
class PasswordReset
attr_reader :user
def self.from_email(email)
new User.find_by_email(email)
end
def self.from_token(token)
new User.find_by_password_reset_token!(token)
end
...
end
क्या new
कुंजी शब्द दोनों विधि निकायों में सेवा करता है? new User.find_by_
। यह User.find_by_
से अलग कैसे है?
def create # controller
password_reset = PasswordReset.from_email(params[:email])
if password_reset.user
password_reset.send_email
redirect_to root_url, notice: "Email sent with password reset instructions."
else
redirect_to new_password_reset_url, alert: "Email address does not match a user account."
end
end
इसके अलावा, क्यों attr_reader :user
की जरूरत:
यहाँ बुला कोड है?
आप शीर्षक पुनर्लेखन कर सकते हैं तो यह एक को दर्शाता है वास्तविक प्रश्न आप जानना चाहते हैं? आप आकर्षक चीज का उपयोग करके अधिक मछली पकड़ लेंगे। –