সক্রিয় রেকর্ড - আজকের আগে তৈরি হওয়া রেকর্ডগুলি সন্ধান করুন


87

আমি সমস্ত রেকর্ড পেতে চাই যেখানে তৈরি_আউট ফিল্ডটি আজ (একটি তারিখ) এর চেয়ে কম। এর মতো কিছু আছে কি:

MyTable.find_by_created_at(< 2.days.ago)

উত্তর:


171

অ্যাক্টিভেকর্ড স্ট্যান্ডার্ড উপায় ব্যবহার করে :

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 }

ধন্যবাদ! আমার যদি MyTable1 থেকে সমস্ত রেকর্ডের প্রয়োজন হয় যা একই শর্তে MyTable এর সাথে একের সাথে সম্পর্কযুক্ত, কোয়েরিটি কীভাবে লিখবেন? আমি এমন কিছু উল্লেখ করছিলাম যা MyTable1.where(MyTable[:created_at] < Time.now)সম্ভব?
সয়ুজ

হ্যাঁ আমি সম্পর্ক সক্রিয় রেকর্ড ক্লাস সেট করেছি।
সৈয়জ

12

MyTable2 দিন আগে পর্যন্ত তৈরি করা সমস্ত রেকর্ড পেতে :

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"]]
পাভেল চুচুভা

3

অন্য উপায়ে একটি সুযোগ তৈরি করা 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যার অর্থ আপনার কেবল আলাদা নাম বেছে নেওয়া দরকার।
এম-দাহাব

-35

সময়.নু এখনই বা এটি খুব দ্বিতীয়টি বোঝায়। সুতরাং এখনই ব্যবহারকারীর সকল সন্ধানের জন্য কেবল ব্যবহার করুন

@users = User.all

এটি এই মুহুর্তে সমস্ত ব্যবহারকারীর সন্ধান করবে এবং ভবিষ্যতের ব্যবহারকারী বা ব্যবহারকারী যারা টাইম.নোর পরে যোগদান করবে তাদের বাদ দেবে


4
সময়.নো আজকের মতো নয়
জন নাগলে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.