বলুন আমার কাছে থিং নামে একটি রেল মডেল রয়েছে। আর একটি url অ্যাট্রিবিউট করতে পারে হয়েছে ঐচ্ছিকরূপে ইন্টারনেটে একটি URL কোথাও এ সেট করা। কোড কোডে, আমার যুক্তি প্রয়োজন যা নিম্নলিখিতগুলি করে:
<% if thing.url.blank? %>
<%= link_to('Text', thing_path(thing)) %>
<% else %>
<%= link_to('Text', thing.url) %>
<% end %>
ভিউতে এই শর্তযুক্ত যুক্তিটি কুৎসিত। অবশ্যই, আমি একটি সহায়ক ফাংশন তৈরি করতে পেরেছিলাম, যা এতে দৃষ্টিভঙ্গি বদলে দেবে:
<%= thing_link('Text', thing) %>
এটি ভারবোসিটি সমস্যা সমাধান করে তবে আমি নিজেই মডেলটিতে কার্যকারিতা থাকা পছন্দ করি। কোন ক্ষেত্রে, ভিউ কোডটি হবে:
<%= link_to('Text', thing.link) %>
এটি অবশ্যই স্পষ্টতই মডেলের একটি লিঙ্ক পদ্ধতি প্রয়োজন। এটিতে কী কী থাকতে হবে তা এখানে:
def link
(self.url.blank?) ? thing_path(self) : self.url
end
প্রশ্নের বিন্দুতে, জিনিস_পথ () মডেল কোডের অভ্যন্তরে একটি অপরিবর্তিত পদ্ধতি। আমি ধরে নিচ্ছি যে মডেলটিতে কিছু সহায়ক পদ্ধতি "টান" দেওয়া সম্ভব, তবে কীভাবে? এবং এমন কোনও বাস্তব কারণ আছে যে রাউটিংটি কেবলমাত্র অ্যাপ্লিকেশনটির নিয়ন্ত্রক এবং দেখার স্তরগুলি পরিচালনা করে? আমি অনেকগুলি ক্ষেত্রেই ভাবতে পারি যেখানে মডেল কোডটির ইউআরএলগুলি মোকাবেলা করার প্রয়োজন হতে পারে (বাহ্যিক সিস্টেমগুলির সাথে সংহতকরণ ইত্যাদি)।