রেল অন রুবেল দ্বারা ইনস্টাগ্রাম তৈরি করুন (পার্ট 3)

পোস্টগুলি দেখান-মুছুন এবং পোস্ট এবং অনুসন্ধান পোস্টের জন্য হ্যাশট্যাগগুলি তৈরি করুন

পূর্ববর্তী পোস্ট:

  • পর্ব 1: মাঝারি.com/luanotes/build-instagram-by-ruby-on-rails-part-1
  • খণ্ড ২: মাঝারি.com/luanotes/build-instagram-by-ruby-on-rails-part-2
  • গিথুব এ পূর্ণ কোড: https://github.com/thanhluanuit/instuigram

সুচিপত্র:

  • শো পোস্ট পৃষ্ঠা যুক্ত করুন: পোস্টের বিস্তারিত তথ্য প্রদর্শন করুন।
  • মুছে ফেলুন পোস্ট ফাংশন।
  • পোস্টের জন্য হ্যাশট্যাগগুলি তৈরি করুন।
  • অনুসন্ধান পোস্ট ফাংশনটি কার্যকর করুন।

নিবন্ধটি পড়ে আপনি কী শিখবেন?

  • অ্যাক্টিভ রেকর্ডে সিআরইউডি: পোস্ট এবং সিআরইউডি হ্যাশট্যাগগুলি পড়ুন / মুছুন
  • অ্যাক্টিভ রেকর্ড ইন অ্যাসোসিয়েশন: has_many: সমিতির মাধ্যমে
  • সক্রিয় রেকর্ড ক্যোয়ারী: অ্যাক্টিভ রেকর্ড ব্যবহার করে ডাটাবেস থেকে ডেটা পুনরুদ্ধার করুন

পোস্টের বিবরণ প্রদর্শন করুন

পদক্ষেপ 1: পোস্ট নিয়ন্ত্রকটিতে শো ক্রিয়া যুক্ত করুন

ক্লাস পোস্টকন্ট্রোলার <অ্যাপ্লিকেশনকন্ট্রোলার ডিএফ শো @ পোস্ট = পোস্ট.ফাইন্ড (প্যারামগুলি [: আইডি]) সমাপ্তি

এই ক্রিয়ায়, একটি পোস্ট ভেরিয়েবল প্যারাম আইডি মাধ্যমে পায়।

পদক্ষেপ 2: শো দেখুন যোগ করুন: (অ্যাপ্লিকেশন / দর্শন / পোস্ট / show.html.erb)

এই পৃষ্ঠার বিন্যাস: পৃষ্ঠার বামে পোস্ট চিত্র এবং পৃষ্ঠার ডানদিকে ব্যবহারকারীর তথ্য এবং পোস্টের বিবরণ দেখায়।

সম্পূর্ণ এইচটিএমএল কোড:

<% = চিত্র_ট্যাগ @ post.image, শ্রেণী: 'চিত্র'%> <% যদি @ post.user.avatar.attected? %> <% = লিঙ্ক_ থেকে ব্যবহারকারী_পথ (@ পোস্ট.ইউজার) করুন%> <% = চিত্র_ট্যাগ @ post.user.avatar%> <% শেষ%> <% শেষ%> <% = link_to @ post.user.username, ব্যবহারকারী_পথ (@ post.user), শ্রেণি: 'ব্যবহারকারীর নাম'%> <% = @ post.description%>

সিএসএস কোড: (অ্যাপ / সম্পদ / স্টাইলশিট / পোস্টসএসএসএস)

.পোস্ট-শো {মার্জিন: 30px 5px 0; সীমানা: 1px কঠিন #dbdbdb;
.col-md-8 {প্যাডিং: 0; .আইমেজ {প্রস্থ: 100%; }}
.user {প্রদর্শন: ফ্লেক্স; প্যাডিং: 10 পিএক্স 0; সীমানা-নীচে: 1px কঠিন #efefef;
.ভাটার {প্রস্থ: 40px; উচ্চতা: 40px; মার্জিন: 8 পিএক্স; img {প্রস্থ: 100%; উচ্চতা: 100%; সীমানা: 1px কঠিন #efefef; সীমানা ব্যাসার্ধ: 50%; ; u ব্যবহারকারীর নাম {প্যাডিং-শীর্ষ: 15px; রঙ: # 262626; হরফ আকার: 14px; হরফ ওজন: 600; &: হোভার {পাঠ্য-সজ্জা: কিছুই নয়; }}}
.ডেস্ক্রিপশন {প্যাডিং: 15px 0; }}

পদক্ষেপ 3: রুটে যুক্ত করুন: (কনফিগার / রুট.আরবি)

সংস্থানসমূহ: কেবলমাত্র পোস্ট: [: নতুন,: তৈরি,: শো]

ব্যবহারকারী প্রোফাইল পৃষ্ঠায় আপডেট করুন:

<% @ পোষ্টস.ইচ করুন | পোস্ট |%> <% = লিঙ্ক_ থেকে পোস্ট_পথ (পোস্ট) করুন%> <% = চিত্র_ট্যাগ পোস্ট.আইমেজ%> <% শেষ%> <% শেষ%>

একটি পোস্ট মুছুন

আমরা ব্যবহারকারীদের পোস্ট মুছতে সাহায্য করতে একটি ফাংশন যুক্ত করি।

পদক্ষেপ 1: পোস্ট নিয়ামক মধ্যে ধ্বংস কর্ম যোগ করুন

Def নষ্ট করুন @ পোষ্ট = কারেন্ট_ইউজার.পোস্টস.ফাইন্ড (প্যারামগুলি [: আইডি]) @ পোস্ট.ডেস্ট্রয়
  redirect_to- এ ব্যবহারকারী_পথ (বর্তমান_ ব্যবহারকারী) শেষ end

এইচটিএমএল এবং আরও সুরক্ষিতভাবে কেউ প্যারাম [[id]] পরিবর্তন এড়াতে আমরা বর্তমান ব্যবহারকারীর পোস্টগুলির মাধ্যমে একটি পোস্ট পাই।

@ পোস্ট = কারেন্ট_ইউজার.পোস্ট.ফাইন্ড (প্যারামগুলি [: আইডি])

পদক্ষেপ 2: রুটে যুক্ত করুন: (কনফিগার / রুট.আরবি)

সংস্থানসমূহ: পোস্ট, কেবলমাত্র: [: নতুন,: তৈরি,: শো,: ধ্বংস]

যুক্ত নতুন রুট দেখুন:

রেক রুট | গ্রেপ পোস্ট

ধ্বংস কর্মের পদ্ধতিটি মুছে ফেলা হয়।

পদক্ষেপ 3: পোস্ট শো পৃষ্ঠায় পোস্ট মুছতে একটি লিঙ্ক দেখান

আমরা পোস্ট বিভাগের বর্ণনার নীচে একটি সরান লিঙ্ক যুক্ত করি এবং কেবলমাত্র বর্তমান ব্যবহারকারীর পোস্টগুলিতে এই লিঙ্কটি প্রদর্শন করি।

এইচটিএমএল: (অ্যাপ / দর্শন / পোস্ট / শো html.erb)

<% if current_user.posts.exists ?? (@ post.id)%> <% = link_to 'সরান', পোস্ট_পথ (@ পোস্ট), পদ্ধতি:: মুছুন, ডেটা: {নিশ্চিত করুন: 'আপনি কি নিশ্চিত?' }%> <% শেষ%>

এটি লিঙ্ক ব্যবহারের পদ্ধতিটি সরান: কোনও পোস্ট মোছার আগে নিশ্চিত বার্তা মুছুন এবং দেখান।

সিএসএস কোড:

.ডিলিট {প্যাডিং-শীর্ষ: 20px; একটি {ফন্ট-আকার: 15px; পাঠ্য-সজ্জা: আন্ডারলাইন; }}

এখন দেখুন:

লিঙ্ক সরান সহ পোস্ট পৃষ্ঠা পোস্ট করুন

পোস্টে হ্যাশট্যাগগুলি যুক্ত করুন

টার্গেট:

এই বিভাগে, আমরা পোস্টের বর্ণনা থেকে তা বের করে পোস্টে হ্যাশট্যাগগুলি যুক্ত করতে যাচ্ছি।

উদাহরণ: যখন কোনও ব্যবহারকারী বিবরণ সহ একটি পোস্ট তৈরি করেন তা হ'ল "আমার প্রিয় # বুকস, দুর্দান্ত # মুহূর্ত"। আমাদের অ্যাপ্লিকেশন 2 হ্যাশট্যাগ তৈরি করবে বই এবং মুহুর্ত।

প্রবাহ:

  • ডিজাইন ডাটাবেস
  • হ্যাশট্যাগ মডেল তৈরি করুন
  • পোস্টহ্যাশট্যাগ মডেল তৈরি করুন
  • পোস্টের জন্য হ্যাশট্যাগগুলি তৈরি করুন

ডিজাইন ডাটাবেস:

আমরা দেখতে পাচ্ছি যে প্রতিটি পোস্টে বর্ণনায় একটি বা একাধিক হ্যাশট্যাগ থাকতে পারে। এবং প্রতিটি হ্যাশট্যাগ এক বা একাধিক পোস্টে ব্যবহার করতে পারে।

  • একটি পোস্টে অনেকগুলি হ্যাশট্যাগ রয়েছে: একের সাথে একাধিক সম্পর্ক
  • হ্যাশট্যাগ পোস্টগুলির অন্তর্ভুক্ত: একের সাথে একাধিক সম্পর্ক

তার মানে, হ্যাশট্যাগের সাথে পোস্টের সাথে বহু থেকে বহু সম্পর্ক রয়েছে।

নীচের চিত্রটি আমাদের উপ-ডাটাবেস ডিজাইন। আমরা 2 টি টেবিল তৈরি করব: হ্যাশট্যাগ এবং পোস্ট হ্যাশট্যাগ টেবিল। পোস্ট হ্যাশট্যাগ সারণি হ'ল পোস্ট এবং হ্যাশট্যাগ সম্পর্কের স্টোর সম্পর্কিত তথ্য।

পোস্ট এবং হ্যাশট্যাগের মধ্যে সম্পর্ক

হ্যাশট্যাগ মডেল তৈরি করুন

নাম ক্ষেত্রের স্ট্রিংয়ের সাথে একটি হ্যাশ_ট্যাগ মডেল তৈরি করতে আমরা একটি মডেল জেনারেটর ব্যবহার করব, একটি হ'ল স্থানান্তর যা একটি হ্যাশ_ট্যাগগুলি সারণী এবং টেস্ট_উনাইট ফাইল তৈরি করে। আপনার আদেশ প্রদান করুন:

রেলগুলি মডেল হ্যাশ_ট্যাগ জেনারেট করে: স্ট্রিং

আউটপুট :

সক্রিয়_আরকর্ড তৈরি করুন ডিবি / মাইগ্রেট করুন / 20181017134507_create_hash_tags.rb তৈরি করুন অ্যাপ / মডেল / হ্যাশ_ট্যাগ.আরবি টেস্ট_উইনটি তৈরি করুন পরীক্ষা / মডেল / হ্যাশ_ট্যাগ_তম.আরবি পরীক্ষা / ফিক্সচার / হ্যাশ_ট্যাগস.আইএমএল তৈরি করুন

অ্যাক্টিভ রেকর্ডের জন্য এটি তৈরি করে:

  • মডেল: অ্যাপ / মডেল / হ্যাশ_ট্যাগ.আরবি
  • মাইগ্রেশন: ডিবি / মাইগ্রেট / 20181017134507_সৃজন_হ্যাশ_ট্যাগস.আরবি

টিপস: কখনও কখনও, আপনি মডেল জেনারেটর কমান্ডের ঠিক ফর্ম্যাটটি মনে করতে না পারেন, কীভাবে ব্যবহার করবেন তা দেখতে আপনি নীচে বাছাই আদেশ ব্যবহার করতে পারেন:

রেল মডেল উত্পন্ন

হ্যাশ_ট্যাগস টেবিল তৈরি করতে মাইগ্রেশন চালান:

রেলস ডিবি: মাইগ্রেট

পোস্টহ্যাশট্যাগ মডেল তৈরি করুন

এই মডেলটি তৈরি করার আগে, আমি আপনাকে একটি has_many: সমিতি বৈশিষ্ট্যের মাধ্যমে বলব। এই সমিতিটি প্রায়শই অন্য মডেলের সাথে বহু থেকে বহু সংযোগ স্থাপন করতে ব্যবহৃত হয়। এটি সূচিত করে যে ঘোষিত মডেলটি তৃতীয় মডেলের মাধ্যমে এগিয়ে গিয়ে অন্য মডেলের শূন্য বা আরও বেশি উদাহরণের সাথে মিলে যায়।

আমাদের ক্ষেত্রে: পোস্ট এবং হ্যাশট্যাগের মাঝে একটি বহু থেকে বহু সংযোগ এবং তৃতীয় মডেলের মাধ্যমে সংযুক্ত করা হয় পোস্টহ্যাশট্যাগ।

মডেল তৈরি করা:

রেলগুলি মডেল পোস্ট_হ্যাশ_ট্যাগ উত্পন্ন করে
সক্রিয়_আরকর্ড তৈরি করুন ডিবি / মাইগ্রেট করুন / 20181017142241_create_post_hash_tags.rb তৈরি করুন অ্যাপ / মডেল / পোস্ট_হ্যাশ_ট্যাগ.আরবি পরীক্ষা করুন / তৈরি করুন পরীক্ষা / মডেল / পোস্ট_হ্যাশ_ট্যাগ_টায়.আরবি তৈরি করুন পরীক্ষা / ফিক্সচার / পোস্ট_হ্যাশ_ট্যাগস.আইএমএল

আপডেট ডিবি / মাইগ্রেট / 20181017142241_সৃজন_পোস্ট_হ্যাশ_ট্যাগস.আরবি ফাইল:

ক্লাস ক্রিয়েটপোস্টহ্যাশট্যাগস <অ্যাক্টিভেকর্ড :: মাইগ্রেশন [5.2] ডিফ চেঞ্জ create_table: post_hash_tags do | t | t.belongs_to: পোস্ট, সূচী: সত্য t.belongs_to: হ্যাশ_ট্যাগ, সূচক: সত্য
t.টাইম স্ট্যাম্পস শেষ প্রান্ত

আমরা মাইগ্রেশন ফাইলটিতে আরও 2 লাইন যুক্ত করেছি:

t.belongs_to: পোস্ট, সূচী: সত্য t.belongs_to: হ্যাশ_ট্যাগ, সূচক: সত্য

মাইগ্রেশন চালান:

রেলস ডিবি: মাইগ্রেট

মাইগ্রেশন পোস্ট_হ্যাশ_ট্যাগগুলি সারণী তৈরি করবে যেখানে আরও 2 টি কলাম পোস্ট_আইডি এবং হ্যাশ_ট্যাগ_আইডি এবং 2 টি এই কলামকে সূচী করে।

আপনি এটি ডিবি / স্কিমা.আরবি ফাইলে দেখতে পাবেন:

create_table "post_hash_tags", বল:: ক্যাসকেড do | t | # "পোষ্ট_আইডি"], নাম: "সূচক_পোস্ট_হ্যাশ_ট্যাগ_অন_পোস্ট_আইডি" শেষ

পোস্ট, হ্যাশট্যাগ এবং পোস্টহ্যাশট্যাগে সমিতি ঘোষণা করুন

মডেলগুলিতে, কোডগুলি এর মতো:

ক্লাস পোস্ট <অ্যাপ্লিকেশন রেকর্ডের হাতে_মানি: পোস্ট_হ্যাশ_ট্যাগগুলি রয়েছে_মানি: হ্যাশ_ট্যাগগুলি, এর মাধ্যমে: পোস্ট_হ্যাশ_ট্যাগগুলি শেষ
শ্রেণি পোস্টহ্যাশট্যাগ <অ্যাপ্লিকেশন রেকর্ডটি অন্তর্ভুক্ত_পোস্টটি অন্তর্ভুক্ত_ থেকে: হ্যাশ_ট্যাগ শেষ
ক্লাস হ্যাশট্যাগ <অ্যাপ্লিকেশন রেকর্ডের_সামান্য: পোস্ট_হ্যাশ_ট্যাগগুলি রয়েছে_মানি: পোস্টগুলি, এর মাধ্যমে: পোস্ট_হ্যাশ_ট্যাগগুলি শেষ

আমাদের সমিতির ঘোষণাগুলি দেখুন:

আমরা কিছু জিজ্ঞাসা চালিয়ে আমাদের ঘোষণাগুলি পরীক্ষা করতে রেল কনসোল ব্যবহার করব। রেলস কনসোল কমান্ডটি কমান্ড লাইন থেকে আপনার রেল অ্যাপ্লিকেশনের সাথে ইন্টারঅ্যাক্ট করতে সহায়তা করে। আপনার আদেশ প্রদান করুন:

রেল সি লোডিং ডেভলপমেন্ট এনভায়রনমেন্ট (রেলস 5.2.1) 2.4.0: 001>

পোস্টের জন্য:

post = Post.last
=> # 
post.hash_tags # এই পোস্টের হ্যাশ_ট্যাগগুলি রিটার্ন করুন
=> হ্যাশট্যাগ লোড (০..6 মিমি) "হ্যাশ_ট্যাগগুলি" নির্বাচন করুন * $ 2 [["পোস্ট_আইডি", 33], ["সীমাবদ্ধ", 11]] => # 

হ্যাশট্যাগের জন্য:

হ্যাশ_ট্যাগ = হ্যাশট্যাগ.create (নাম: "রেল")
=> # 
hash_tag.posts # হ্যাশ_ট্যাগ ব্যবহার করে পোস্টগুলি ফিরে আসুন
=> পোস্ট লোড (0.3 মিমি) "পোস্টগুলি" নির্বাচন করুন * $ 2 [["হ্যাশ_ট্যাগ_আইডি", 2], ["সীমাবদ্ধ", 11]] => # 

এটি কাজ করে!

পোস্টের জন্য হ্যাশট্যাগগুলি তৈরি করুন

যখন কোনও ব্যবহারকারী এই জাতীয় বিবরণ সহ একটি নতুন পোস্ট তৈরি করেন: "আমি # রবি পছন্দ করি, রুবি হ'ল অসাধারণ"। আমি আশা করি আমাদের সিস্টেমটি নামের সাথে 2 টি হ্যাশট্যাগ তৈরি করবে: রুবি এবং দুর্দান্ত।

পদক্ষেপ 1: পোস্টের বর্ণনা থেকে হ্যাশট্যাগগুলি বের করুন

হ্যাশট্যাগগুলি নিষ্কাশন করতে পোস্ট মডেলটিতে একটি উদাহরণ পদ্ধতি যুক্ত করুন:

Def এক্সট্র্যাক্ট_নাম_হ্যাশ_ট্যাগগুলি বর্ণনা.ট_এস.স্ক্যান (/ # \ ডাব্লু + /) map মানচিত্র {| নাম | name.gsub ("#", "")} শেষ

এই পদ্ধতিটি নামের হ্যাশট্যাগগুলির একটি অ্যারেতে ফিরে আসবে। উদাহরণ স্বরূপ:

post = Post.last
=> # 
post.extract_name_hash_tags
=> ["রুবি", "দুর্দান্ত"]

পদক্ষেপ 2: একটি পোস্ট তৈরির পরে হ্যাশট্যাগগুলি তৈরি করতে একটি কলব্যাক যুক্ত করুন।

অ্যাক্টিভ রেকর্ড অনেক দরকারী কলব্যাক সমর্থন করে।

আমরা আমাদের পোস্টের মডেলের জন্য after_commit কলব্যাক ব্যবহার করি, একটি পোস্ট তৈরি, আপডেট করা বা ধ্বংস হওয়ার পরে এই কলব্যাক কল করা হয়। তবে এখন, আমরা যখন কোনও পোস্ট তৈরি করা হয় তখন এই কলব্যাকটি ট্রিগার করতে চাই, তাই ক্রিয়া তৈরির জন্য সুনির্দিষ্ট বিকল্পে আমরা আরও যুক্ত করি: আপনি রেল এপিআই নথিতে after_commit সম্পর্কে আরও জানতে পারবেন।

after_commit: create_hash_tags, on:: create

পোস্ট কলটিতে এই কলব্যাকটি সংজ্ঞায়িত করুন:

ক্লাস পোস্ট <অ্যাপ্লিকেশন রেকর্ড
after_commit: create_hash_tags, on:: create Def create_hash_tags # শেষের শেষের হ্যাশ_ট্যাগ তৈরি করুন

পোস্ট তৈরির পরে create_hash_tags পদ্ধতিটি কল করা হবে। এই পদ্ধতিতে যুক্তি যুক্ত করুন:

Def create_hash_tags extract_name_hash_tags.each do | name | hash_tags.create (নাম: নাম) শেষ প্রান্ত
Def এক্সট্রাক্ট_নাম_হ্যাশ_ট্যাগগুলি বর্ণনা.ট_এস.স্ক্যান (/ # \ ডাব্লু + /) map মানচিত্র {| নাম | name.gsub ("#", "")} শেষ

Create_hash_tags পদ্ধতিটি ব্যাখ্যা করুন:

  • নিষ্কাশন_নাম_হ্যাশ_ট্যাগ পদ্ধতির ফলাফলের উপর ভিত্তি করে পদ্ধতিটি পোস্ট সম্পর্কিত হ্যাশট্যাগ তৈরি করবে।
  • লাইন hash_tags.create (নাম: নাম): যেহেতু একটি পোস্টে অনেকগুলি hash_tags রয়েছে, post_hash_tags টেবিলের মাধ্যমে, এই লাইন কোডটি একটি নতুন হ্যাশট্যাগ রেকর্ড তৈরি করবে (এইচ) এবং একটি নতুন পোস্টহ্যাশট্যাগ রেকর্ড তৈরি করবে যাতে হ্যাশ_ট্যাগ_আইডি সবে তৈরি (এইচ.আইডি) এবং পোস্ট_আইড রয়েছে বর্তমান পোস্ট আইডি।

শেষ অবধি, পোস্ট মডেলটি এর মতো দেখতে:

ক্লাস পোস্ট <অ্যাপ্লিকেশন রেকর্ডের পরে_কমিট: তৈরি_হ্যাশ_ট্যাগগুলি, অন:: তৈরি করুন
Def create_hash_tags extract_name_hash_tags.each do | name | hash_tags.create (নাম: নাম) শেষ প্রান্ত
Def এক্সট্রাক্ট_নাম_হ্যাশ_ট্যাগগুলি বর্ণনা.ট_এস.স্ক্যান (/ # \ ডাব্লু + /) map মানচিত্র {| নাম | name.gsub ("#", "")} শেষ প্রান্ত

এখন, আমরা আমাদের আবেদনে ফিরে আসি, নতুন পোস্ট যুক্ত করি এবং ফলাফলগুলি দেখি।

পোস্ট অনুসন্ধান করুন

টার্গেট:

এই বিভাগের জন্য, আমরা বাস্তবায়ন করতে যাচ্ছি:

  • অনুসন্ধান ফাংশন যা ব্যবহারকারীদের হ্যাশট্যাগ (#) বা পোস্টের বিবরণ দিয়ে পোস্টগুলি অনুসন্ধান করতে সহায়তা করে।
  • পোস্টের বিবরণে হ্যাশট্যাগগুলি সক্ষম করুন, পৃষ্ঠা সন্ধানে এটি ক্লিকযোগ্য able

সূচক ক্রিয়া সহ অনুসন্ধান নিয়ন্ত্রক তৈরি করুন:

রেলস জি নিয়ন্ত্রক অনুসন্ধান সূচি - নো-জাভাস্ক্রিপ্টস - নন-স্টাইলশিট - কোনও সহায়ক নয়

রুটে আপডেট করুন:

'অনুসন্ধান' => 'অনুসন্ধান # সূচক' পান

অনুসন্ধান ফর্মটিতে অনুসন্ধান_পথ যুক্ত করুন:

<% = ফর্ম_সহ ইউআরএল: অনুসন্ধান_পথ, পদ্ধতি:: পাওয়া, স্থানীয়: সত্য, শ্রেণি: 'ফর্ম-ইনলাইন অনুসন্ধান-ফর্ম' করুন | ফর্ম | %> <% = form.text_field: ক্যোয়ারী, মান: প্যারাম [: ক্যোয়ারী], শ্রেণি: 'ফর্ম-নিয়ন্ত্রণ এমআর-স্ম -২', স্থানধারক: '# অনুসন্ধান'%> <% শেষ%>

অনুসন্ধান কন্ট্রোলারে: (অ্যাপ্লিকেশন / নিয়ন্ত্রণকারী / অনুসন্ধান_কন্ট্রোলআরআরবি)

আমরা হ্যাশট্যাগের নাম বা বিবরণ দিয়ে পোস্টগুলি অনুসন্ধান করতে যাচ্ছি।

ক্লাস অনুসন্ধানকন্ট্রোলার <অ্যাপ্লিকেশনকন্ট্রোলার ডিএফ সূচক যদি প্যারাম হয় [: ক্যোয়ারী]। স্টার্ট_উইথ? ('#') ক্যোয়ারী = প্যারাম [: কোয়েরি] .gsub ('#', '') @ পোষ্ট = পোস্ট.জয়েন্স (: হ্যাশ_ট্যাগস)। কোথাও ( হ্যাশ_ট্যাগগুলি: {নাম: ক্যোয়ারী else) অন্য @ পোস্ট = পোস্ট.হোয়ার ("এর মতো বিবরণ?", "% # {প্যারাম [: ক্যোরি]}%") শেষের শেষ

কেস 1: একটি হ্যাশট্যাগ (# ট্র্যাভেল) দ্বারা অনুসন্ধান করুন, আমরা এমন পোস্টগুলি ফিরিয়ে দেব যার হ্যাশট্যাগগুলির নাম ক্যোয়ারী মান।

অনুসন্ধান পোস্টসমূহ:

ক্যোয়ারী = প্যারাম [: ক্যোয়ারী] .gsub ('#', '')
Post.joins (: hash_tags)। কোথাও (হ্যাশ_ট্যাগগুলি: {নাম: ক্যোয়ারী})

এটি উত্পাদন করে:

# ক্যোয়ারী = "রুবি"
"পোস্টগুলি" নির্বাচন করুন। * "পোস্টগুলি" থেকে "পোস্ট_হ্যাশ_ট্যাগগুলি" "পোস্ট_হ্যাশ_ট্যাগগুলি" তে যোগ দিন post "পোস্ট_আইডি" = "পোস্টস"। "আইডি" অন্তর্ভূক্ত "হ্যাশ_ট্যাগস" "হ্যাশ_ট্যাগগুলি" ”" আইডি "=" পোস্ট_হ্যাশ_ট্যাগ "” "।" হ্যাশ_ট্যাগ_আইডি "যেখানে" হ্যাশ_ট্যাগগুলি "” "নাম" = $ 1 সীমাবদ্ধতা $ 2 [["নাম", "রুবি"], ["সীমাবদ্ধ", ১১]]

কেস ২: বিবরণ অনুসারে অনুসন্ধান করুন (হ্যাশট্যাগ নয়), আমরা এমন পোস্টগুলি ফিরিয়ে দেব যাতে বর্ণনামূলকভাবে ক্যোয়ারী থাকে।

@ পোষ্টস = পোস্ট.হোয়ার ("এর মতো বিবরণ?", "% # {প্যারাম [: ক্যোরি]}%")

আপনি এখানে আরও ক্যোয়ারী শিখতে পারেন: guides.rubyonrails.org/active_record_querying

দেখুন: (অ্যাপ্লিকেশন / দর্শন / অনুসন্ধান / সূচক html.erb)

<% যদি @ পোস্ট.অস্তিত্ব থাকে? %> শীর্ষ পোস্ট <% অন্য%% গলি! কোনও মেলানো পোস্ট নেই ... <% শেষ%>
<% @ পোষ্টস.ইচ করুন | পোস্ট |%> <% = চিত্র_ট্যাগ পোস্ট.আইমেজ%> <% শেষ%>
ফলাফল ফলাফল পৃষ্ঠা

পোস্টের বিবরণে হ্যাশট্যাগগুলি দেখান

আমরা হ্যাশট্যাগগুলি ক্লিকযোগ্য এবং এই হ্যাশট্যাগের অনুসন্ধানের পোস্টগুলিতে লিঙ্ক তৈরি করি। হোমপেজ এবং পোস্ট শো পৃষ্ঠায়, নীচের মতো পোস্টের বিবরণ পরিবর্তন করুন:

<% = post.description%>

প্রতি

<% post.description.to_s.split ('') .চ করুন | শব্দ | %> <% যদি word.start_with? ('#')%> <% = link_to শব্দ, অনুসন্ধান_পাথ (ক্যোয়ারী: শব্দ)%> <% অন্য%> <% = শব্দ%> <% শেষ%> <% শেষ% >

এখন একটি পোস্ট দেখে মনে হচ্ছে:

উপসংহার

এই নিবন্ধে, অ্যাসোসিয়েশন ইন অ্যাক্টিভ রেকর্ড, বিশেষত has_many: অ্যাসোসিয়েশনের মাধ্যমে শিখতে আমি গাইড করি। এবং কীভাবে সক্রিয় রেকর্ড ব্যবহার করে ডাটাবেস থেকে ডেটা পুনরুদ্ধার করবেন। আমি আশা করি আপনি অ্যাক্টিভ রেকর্ড সম্পর্কে আরও গভীর বুঝতে পারবেন।

গিথুব-এ উত্স কোড: https://github.com/thanhluanuit/instuigram

তথ্যসূত্র:

  • অ্যাক্টিভ রেকর্ড ইন অ্যাসোসিয়েশন: https://guides.rubyonrails.org/association_basics.html
  • সক্রিয় রেকর্ড অনুসন্ধান ইন্টারফেস: https://guides.rubyonrails.org/active_record_querying.html

আরো দেখুন

ফেসবুকের ইনস্টাগ্রামের সাম্প্রতিক ক্রয়টি কি গুগলের ইউটিউব কেনার তুলনায়?কীভাবে কেউ এই চিত্রটির গুণমানকে ক্ষতিগ্রস্থ বা হ্রাস না করে হোয়াটসঅ্যাপে ছবিগুলি প্রেরণ করতে পারে?আমি কীভাবে অন্য সেল ফোনে একই হোয়াটসঅ্যাপ অ্যাকাউন্টটি ব্যবহার করব?আমার পছন্দ মতো একটি মেয়েটির কাছে কীভাবে যোগাযোগ করা উচিত যা আমি দীর্ঘ সময় দেখি না? আমরা স্ন্যাপচ্যাট নিয়ে মাঝে মাঝে কথা বলি, তবে আমি সম্প্রতি তাকে আমার মন থেকে বের করতে সক্ষম হইনি।আপনি কীভাবে ইনস্টাগ্রাম ফিল্টারগুলি ভিডিও এবং ফটোতে আপলোড না করে ব্যবহার করতে পারেন?ব্র্যান্ডগুলি থেকে প্রদত্ত স্পনসরশিপ পাওয়ার জন্য ইনস্টাগ্রামে আপনার কতজন অনুসরণকারী দরকার?ফেসবুক অনুরাগীদের ইনস্টাগ্রাম ফলোয়ারে পরিণত করা কি সম্ভব?কী ইন্সটাগ্রামকে ইকমার্সের জন্য একটি শক্তিশালী বিপণনের সরঞ্জাম করে?