class HouseBuyersController < ...
def my_method
# How could I get here the relevant model name, i.e. "HouseBuyer" ?
end
end
class HouseBuyersController < ...
def my_method
# How could I get here the relevant model name, i.e. "HouseBuyer" ?
end
end
উত্তর:
এটি এটি করবে:
class HouseBuyersController < ApplicationController
def index
@model_name = controller_name.classify
end
end
নিয়ন্ত্রক ক্রিয়াকলাপ বিমূর্ত করার সময় এটি প্রায়শই প্রয়োজন:
class HouseBuyersController < ApplicationController
def index
# Equivalent of @house_buyers = HouseBuyer.find(:all)
objects = controller_name.classify.constantize.find(:all)
instance_variable_set("@#{controller_name}", objects)
end
end
controller_name.sub('_', ' ').titleize"হাউস বায়ার্স" পেতে পারেন can
new.controller_name.classify.constantizeক্লাস সংজ্ঞা ব্যবহার করতে পারেন ।
যদি আপনার নিয়ামক এবং মডেল একই নামের জায়গায় থাকে তবে আপনি যা চান তা তা
controller_path.classify
controller_pathআপনাকে নাম স্থান দেয়; controller_nameনা।
উদাহরণস্বরূপ, যদি আপনার নিয়ামক হয়
Admin::RolesController
তারপরে:
controller_path.classify # "Admin::Role" # CORRECT
controller_name.classify # "Role" # INCORRECT
এটি কিছুটা হ্যাক, তবে যদি আপনার মডেলটির নামটি আপনার নিয়ামকের নাম অনুসারে হয়:
class HouseBuyersController < ApplicationController
def my_method
@model_name = self.class.name.sub("Controller", "").singularize
end
end
... আপনার @ মডেল_নামের ইনসেন্ট ভেরিয়েবলে আপনাকে "হাউসবায়ার" দেবে।
আবার, এটি একটি বিশাল ধারণা তৈরি করে যে "হাউসবায়ারস কন্ট্রোলার" কেবল "হাউসবায়ার" মডেলগুলির সাথে আলোচনা করে।
আপনি যদি ডিফল্ট এমভিসি ব্যবহার করেন যা আপনার কোড অনুসরণ করে বলে মনে হচ্ছে না তবে এটি সম্ভব নয়। আপনার নিয়ামকটি একটি মডেল বলে মনে হচ্ছে তবে আপনি সেখানে কেবল একটি টাইপ পেয়েছেন। যাইহোক, কন্ট্রোলার এবং মডেলগুলি মৌলিকভাবে রেল এমভিসিতে পৃথক করা হয় যাতে কন্ট্রোলাররা জানতে পারে না যে তারা কোন মডেলের সাথে যুক্ত।
উদাহরণস্বরূপ আপনার কাছে পোস্ট নামের একটি মডেল থাকতে পারে। এটিতে একটি নিয়ামক পোস্ট_কন্ট্রোলার থাকতে পারে বা নিবন্ধ_কন্ট্রোলারের মতো একটি নিয়ামক থাকতে পারে। আপনি যখন নিয়ামক হিসাবে আসল কোডটি ডিফ করেন তখনই কেবল মডেলগুলি সম্পর্কে রেলগুলি জানেন
def index
@posts = Post.all
@posts = Article.all
end
রেল স্ট্যান্ডার্ড কন্ট্রোলারগুলিতে মডেলটি কী তা জানার উপায় নেই।