একক বা বহুবচন নিয়ামক এবং ব্যস্তগুলিতে সহায়তার নাম


112

নিয়ামক এবং সাহায্যকারীদের একক নাম ব্যবহারে কোনও অসুবিধা আছে কি? কিছুই এই উপর নির্ভর করে বলে মনে হচ্ছে। এমনকি এটি মনে হয় সহায়তাকারীদের একক হিসাবে বনাম বহুবচন সম্পর্কে তাদের একই নিয়ন্ত্রকগুলির মতো কম পছন্দ করতে হবে না, কমপক্ষে আমার সীমিত পরীক্ষার ভিত্তিতে। এটা কি সত্যি?


2
আমি একক বা বহুবচন নিয়ামক নাম সিদ্ধান্ত নেওয়ার চেষ্টা করতে একই দ্বিধা ছিল!
অ্যান্ড্রু

15
ধন্যবাদ :) আপনি যদি এই জাতীয় বিষয় নিয়ে প্রশ্ন করেন তবে রেলস সংস্কৃতিতে আপনাকে বোকা বোধ করার একটা উপায় রয়েছে।
এলিওরকোড

উত্তর:


158

অবশ্যই বহুবচন

বিশ্রামের রাউটিং এবং একটি একক নিয়ামক সহ

নিয়ন্ত্রক:

dog_controller.rb  

রুট:

map.resources :dogs  # => blows up  
map.resources :dog  # is ok, but...  
dogs_path # => blows up  
dog_path  # => ok  

বহুবচন নিয়ামক ব্যবহার করে

নিয়ন্ত্রক:

dogs_controller.rb

রুট:

map.resources :dogs  
dogs_path # => ok  
dog_path # => ok  

rails generate controller --help বহুবচন উদাহরণ রয়েছে:

Example:
`rails generate controller CreditCards open debit credit close`

CreditCards controller with URLs like /credit_cards/debit.
    Controller: app/controllers/credit_cards_controller.rb
    Test:       test/controllers/credit_cards_controller_test.rb
    Views:      app/views/credit_cards/debit.html.erb [...]
    Helper:     app/helpers/credit_cards_helper.rb

23
সম্মত হয়। এটি বিভ্রান্তিকর যে নিয়ন্ত্রণকারীদের জন্য রেল ৩.১ জেনারেটর সহায়তা বার্তা একটি উদাহরণ হিসাবে "ক্রেডিটকার্ড" (একক) ব্যবহার করে।
ব্যান্টিক



আমরা কীভাবে একক নিয়ামক স্ট্যাকওভারফ্লো.com
সন্তোষ

সুতরাং নামকরণটি বহুবচন এবং ক্ষেত্রে আসবে। যেমন::
রেলগুলি

27

নিয়ামকদের জন্য বহু নাম ব্যবহার করা কেবল একটি সম্মেলন।

বহুবচন নামগুলি সাধারণত আরও প্রাকৃতিক বলে মনে হয় (বিশেষত নিয়ন্ত্রকদের ক্ষেত্রে যা নির্দিষ্ট মডেলটির সাথে সরাসরি আবদ্ধ থাকে: ব্যবহারকারী -> ব্যবহারকারীগণ ইত্যাদি) তবে আপনি যা চান তা ব্যবহার করতে পারেন।

সহায়ক হিসাবে, সমস্ত সহায়ক সমস্ত নিয়ামকের জন্য ডিফল্টরূপে উপলব্ধ, তাই প্রযুক্তিগতভাবে, আপনি কীভাবে আপনার সহায়তাকারীদের নাম রাখবেন তা মোটেই গুরুত্বপূর্ণ নয়। কন্ট্রোলারের একই নাম সহ কোনও নিয়ামকের সাহায্যকারী ফাংশন রাখার জন্য এটি অন্য একটি সম্মেলন।


10
কন্ট্রোলারের সাথে ব্যবহারকারীর ব্যবহারকারী কন্ট্রোলার হওয়া কি আরও স্বাভাবিক হবে না ?? এছাড়াও, আপনি যদি ডিফল্ট রুটগুলির উপর নির্ভর করেন তবে আপনি ইউআরএল দেখতে পাবেন যা দেখতে / ব্যবহারকারীদের / সম্পাদনার মতো লাগে যা দেখে মনে হয় আপনি সমস্ত ব্যবহারকারীকে সম্পাদনা করছেন। আমার কাছে, এটি মোটেও খুব স্বাভাবিক নয়।
allyourcode

5
@allyourcode: ঠিক আছে, আমি অনুমান করি এগুলি সব বিষয়ভিত্তিক। আমার কাছে, / ব্যবহারকারীদের সমস্ত ব্যবহারকারীর তালিকা থাকা / ব্যবহারকারীর চেয়ে প্রাকৃতিক।
15'09

1
ওহ, এবং এটি শান্ত উপায়।
15'09

3
@ "বিশ্রামের উপায়ে" ক্যান্টিশ মন্ত্রের মতো শোনাচ্ছে। যদিও এটি সত্যই আমাকে অবাক করে না, যেমন রেলগুলি সামগ্রিকভাবে ধর্মীয়। আমি পছন্দ করি যে কীভাবে রেলগুলি সমস্তই আরএসটি সম্পর্কে আচ্ছন্ন, তবুও ডিফল্ট রুটগুলি শান্ত নয়। এমনকি RESTful রুটগুলি কনফিগার করাও অপ্রাকৃত। অন্তর্ভুক্ত: শর্তগুলি => {: পদ্ধতি =>: পোস্ট connect সংযোগের জন্য দ্বিতীয় যুক্তিতে কোনও অর্থ হয় না, কারণ হ্যাশকে বর্তমান রুলের সাথে মেলে এমন কোনও অনুরোধটি কীভাবে পরিচালনা করতে হবে তা নির্দিষ্ট করে বলা হয়েছে, প্রদত্ত অনুরোধটি বর্তমান নিয়মের সাথে মেলে কিনা তা নয়। ।
allyourcode

2
মতে @allyourcode এই সম্পাদনার জন্য ডিফল্ট রুট / ব্যবহারকারীরা /: ID / পরিবর্তে / ব্যবহারকারীরা / সম্পাদনা সম্পাদনা করুন। "সমস্ত ব্যবহারকারীর বাইরে, আইডি: আইডি" দিয়ে ব্যবহারকারীকে সম্পাদনা করা আমার কাছে একেবারেই স্বাভাবিক মনে হচ্ছে।
ডেভিডজি

19

একটি মডেল একবচন কারণ এটি ব্যবহারকারীর মতো একটি একক বস্তুর উল্লেখ করে। একটি নিয়ামক বহুবচন কারণ এটি ব্যবহারকারীদের সংগ্রহের নিয়ন্ত্রণ (পদ্ধতি)) রুটগুলির নাম কীভাবে দেওয়া হয় তা সমস্ত পৃথক বিকাশকারী to আমি কখনও কোনও ব্যবহারকারীর অভিযোগ পাইনি যে ওয়েব অনুরোধের জন্য একটি URL একক বা বহুবচন। মানসম্পন্ন পৃষ্ঠা প্রদর্শন বা শেষ ব্যবহারকারীদের জন্য API অনুরোধগুলি পরিবেশন করার সময় বর্তমান এবং ভবিষ্যতের অনুদানকারীদের জন্য একটি সাধারণ সম্মেলন বজায় রাখার শেষ ফলাফল।


12

রেল গাইডগুলিতে আপনার একটি সম্পূর্ণ ব্যাখ্যা রয়েছে: http://edgeguides.rubyonrails.org/routing.html#resource-routing-the-rails-default


4
প্রকৃতপক্ষে এটি সঠিক উত্তর খ / সি আপনি পড়েন তবে এটি ব্যাখ্যা করে যে সংস্থান সংস্থান করার জন্য বহুবচন সঠিক উত্তর। একটি একক সংস্থান জন্য, একবচন সঠিক উত্তর। ডকুমেন্টেশন উদাহরণ। এবং প্রকৃতপক্ষে, এটি অন্য পোস্টে ভাল উত্তর দেওয়া হয়েছে: স্ট্যাকওভারফ্লো
রব

এই পোস্টে মত সরকারী রেফারেন্স দ্বারা সমর্থিত উত্তর newbies অনেক সাহায্য! ধন্যবাদ
ওয়াসিফ হোসেন

9

এটি রেল কনভেনশন যা একজন নিয়ামক একটি মডেল পরিচালনা করেন, সেই মডেলের এক বা একাধিক উদাহরণ রানটাইমের সময় উপস্থিত থাকতে পারে কিনা। তবে, আপনার কাছে একটি রেলস অ্যাপ্লিকেশন থাকতে পারে যেখানে (কিছু) কন্ট্রোলার (এবং সম্পর্কিত দৃষ্টিভঙ্গি) কোনও নির্দিষ্ট মডেলের সাথে সম্পর্কিত নয়, বরং কার্যকারিতার আরও জটিল সেট পরিচালনা করে। এই ক্ষেত্রে, স্বয়ংক্রিয় বহুবচন কোনও অর্থবোধ করে না।

আমি বর্তমানে রেল অ্যাপ্লিকেশনগুলিতে এই বিভাগটির সাথে খাপ খাইয়ে দেখছি এবং এটি আমার কাছে কেবল জ্বলন্ত যে প্রত্যাশা করে যে সনাক্তকারীদের আমি এক জায়গায় একা হিসাবে চিহ্নিত করেছি তারপরে অন্যান্য জায়গায় তাদের বহুবচন রূপে ব্যবহার করা হবে। উদাহরণস্বরূপ, আমি এর মতো কিছু সংজ্ঞায়িত করতে চাই config/routes.rb:

  resource :dashboard, :only => [:show]

এবং তারপরে আমি DashboardControllerনিয়ামককে অ্যাপ্লিকেশনের কিছু দিক সম্পর্কে সংক্ষিপ্তসার তথ্য প্রদর্শন করতে চাই , একাধিক ডাটাবেস টেবিল থেকে তথ্য সংগ্রহ করি। সুতরাং এখানে, Dashboardঅ্যাপ্লিকেশনটির কোনও মডেল উল্লেখ করা হয়নি, এবং নিয়ামকের নামটি থাকা খুব অদ্ভুত হবেDashboardsController

আমি এই উত্তরে স্বয়ংক্রিয় বহুবচনগুলির জ্বালা করার একটি ভাল সমাধান খুঁজে পেয়েছি । সংক্ষেপে, ফাইল সম্পাদনা করুন config/initializers/inflections.rbএবং আপনার সংজ্ঞাটি স্বয়ংক্রিয়ভাবে সংজ্ঞাযুক্ত করতে চান না এমন শব্দগুলি যুক্ত করুন:

ActiveSupport::Inflector.inflections do |inflect|
  inflect.uncountable %w( dashboard foo bar baz )
end

3

কারাগারে নিয়ন্ত্রকদের নামকরণ কনভোলারারের নামে শেষ শব্দটি বহুবচন করার পক্ষে , যদিও এটি কঠোরভাবে প্রয়োজন হয় না (যেমন,ApplicationController )।

উদাহরণস্বরূপ, এর ClientsControllerচেয়ে বেশি পছন্দনীয় ClientController, r বা আরও SiteAdminsControllerভাল ।SiteAdminControlleSitesAdminsController

এই কনভেনশন অনুসরণ করে আপনি প্রতিটি যোগ্যতার প্রয়োজন ছাড়াই ডিফল্ট রুট জেনারেটর (উদাহরণস্বরূপ সংস্থানসমূহ) ব্যবহার করতে পারবেন :path বা:controller এবং আপনার অ্যাপ্লিকেশন জুড়ে ইউআরএল এবং পাথ হেল্পারদের ব্যবহারকে সামঞ্জস্য রাখবে।

তথ্যসূত্র: নিয়ামক নামকরণ কনভেনশন-রেল ডক



2

যদি নিয়ামক কোনও সংস্থান হয় তবে তা অবশ্যই বহুবচন হতে হবে ...

উদাহরণ স্বরূপ

নিয়ামক

articles_controller.rb

মডেল

article.rb

আপনি যখন অনুরূপ মডেলগুলি না পেয়ে থাকেন তবে আপনি একক নিয়ন্ত্রকের নামগুলি ব্যবহার করতে পারেন

welcome_controller.rb

1

বহুবচনগুলি ব্যবহার করা আরও ভাল শোনায় এবং তারপরে যদি আপনার কাছে এমন একটি নিয়ামক থাকে যা একক রেসোর্স, অর্থাৎ ব্যবহারকারীকে পরিচালনা করে তবে আপনি এখনও ইউআরএল / ব্যবহারকারীর নাম রাখতে পারেন name

সাহায্যকারীদের সাথে প্রায়শই প্রতিটি নিয়ামকের জন্য কোনও সাহায্যকারীর প্রয়োজন হয় না এবং প্রায়শই সহায়িকার পদ্ধতি থাকবে যা আপনি ascorss একাধিক কন্ট্রোলার ব্যবহার করতে পারেন এবং আপনার অ্যাপ্লিকেশন সহায়কের মাধ্যমে সেগুলি সমস্তই শ্বাসকষ্টের পরিবর্তে কাস্টম সহায়কগুলিতে রেখে যেতে পারেন যেমন লেআউট_হেল্পার বা অন্য কোনও অন্যান্য নামযুক্ত ফাইল।


ক্যান বার্ক গুডার হিসাবে একই মন্তব্য। এছাড়াও, আপনার শেষ বাক্য / অনুচ্ছেদটি অনুসরণ করতে আমার কিছুটা সমস্যা হয়েছিল কারণ খুব কম বিরামচিহ্ন ছিল!
অ্যালিউরকোড

1
এর জন্য দুঃখিত, আমি কেবল বোঝাতে চাইছিলাম ডিফল্টদের নাম ব্যবহার করার চেয়ে কাস্টম সহায়ক তৈরি করার চেয়ে কাস্টম হেল্পারদের তৈরি করা আরও ভাল ধারণা হতে পারে যেখানে তারা ব্যবহৃত হবে তা সর্বদা পুরোপুরি ক্যাপচার করে না। আপনার যদি বেশ কয়েকটি সহায়ক পদ্ধতি থাকে যা বিন্যাসের জন্য ব্যবহৃত হবে, এটিকে লেআউট_হেল্পার বলুন।
নাইটকোডার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.