আমি সমস্ত রেকর্ড পেতে চাই যেখানে তৈরি_আউট ফিল্ডটি আজ (একটি তারিখ) এর চেয়ে কম। এর মতো কিছু আছে কি:
MyTable.find_by_created_at(< 2.days.ago)
উত্তর:
অ্যাক্টিভেকর্ড স্ট্যান্ডার্ড উপায় ব্যবহার করে :
MyModel.where("created_at < ?", 2.days.ago)
অন্তর্নিহিত আরেল ইন্টারফেস ব্যবহার করে :
MyModel.where(MyModel.arel_table[:created_at].lt(2.days.ago))
আরেলের উপরে একটি পাতলা স্তর ব্যবহার করা :
MyModel.where(MyModel[:created_at] < 2.days.ago)
চিকিত্সা ব্যবহার :
MyModel.where { created_at < 2.days.ago }
MyTable
2 দিন আগে পর্যন্ত তৈরি করা সমস্ত রেকর্ড পেতে :
MyTable.where(created_at: Date.new..2.days.ago)
নোট করুন যে আপনি ভবিষ্যতে ক্ষেত্র সমেত ক্ষেত্রগুলির সাথে অনুরূপভাবে রেকর্ডও সন্ধান করতে পারেন, অর্থাৎ এখন থেকে কমপক্ষে 2 দিনের MyTable
সাথে সমস্ত রেকর্ড পেতে event_date
:
MyTable.where(event_date: 2.days.from_now..DateTime::Infinity.new)
"created_at" BETWEEN $1 AND $2 [["created_at", "4713-01-01 BC"], ["created_at", "2020-03-31 21:43:28.113759"]]
অন্য উপায়ে একটি সুযোগ তৈরি করা MyModel
বা ApplicationRecord
ব্যবহার Arel মত ইন্টারফেস tokland মধ্যে sugensted তার উত্তর যেমন:
scope :col, ->(column, predication, *args) { where(arel_table[column].public_send(predication, *args)) }
সুযোগের ব্যবহারের উদাহরণ:
MyModel.col(:created_at, :lt, 2.days.ago)
সমস্ত পূর্বাভাসের জন্য ডকুমেন্টেশন বা সোর্স কোড পরীক্ষা করুন । এই সুযোগটি where
শৃঙ্খলা ভঙ্গ করে না । এর অর্থ আপনি এটি করতে পারেন:
MyModel.custom_scope1.col(:created_at, :lt, 2.days.ago).col(:updated_at, :gt, 2.days.ago).custom_scope2
ActiveRecord::Relation
নামের সাথে একটি উদাহরণ পদ্ধতি সংজ্ঞায়িত করে arel
যার অর্থ আপনার কেবল আলাদা নাম বেছে নেওয়া দরকার।
সময়.নু এখনই বা এটি খুব দ্বিতীয়টি বোঝায়। সুতরাং এখনই ব্যবহারকারীর সকল সন্ধানের জন্য কেবল ব্যবহার করুন
@users = User.all
এটি এই মুহুর্তে সমস্ত ব্যবহারকারীর সন্ধান করবে এবং ভবিষ্যতের ব্যবহারকারী বা ব্যবহারকারী যারা টাইম.নোর পরে যোগদান করবে তাদের বাদ দেবে
MyTable1.where(MyTable[:created_at] < Time.now)
সম্ভব?