یک مدل Post با فیلد title:string و body:text ایجاد کرده، اعتبارسنجی حضور title و حداقل طول 5 برای body اضافه کنید، سپس سه رکورد نمونه بسازید و یک کوئری ActiveRecord بنویسید که تمام پستهایی را که در title آنها کلمه "Ruby" وجود دارد به ترتیب نزولی created_at برگرداند.
9.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:30 0.0
برای حل این مسئله از Rails و ActiveRecord استفاده کنید: با دستور rails generate model Post title:string body:text مدل و migration را بسازید و rails db:migrate را اجرا کنید؛ در app/models/post.rb اعتبارسنجیها را با validates :title, presence: true و validates :body, length: { minimum: 5 } اضافه کنید. سپس در Rails console یا db/seeds.rb سه رکورد بسازید (مثلاً با Post.create! تا خطاها را ببینید) و برای بازیابی پستها از عبارتهایی مثل Post.where("title LIKE ?", "%Ruby%").order(created_at: :desc) استفاده کنید؛ میتوانید این کوئری را به صورت یک scope در مدل نیز تبدیل کنید تا قابلاستفادهتر باشد.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
خوب است از validations ساده استفاده کنید و با Post.create! سه رکورد بسازید تا با خطاها آشنا شوید. برای جستجو، استفاده از where("title LIKE ?", "%Ruby%").order(created_at: :desc) خوب است اما تعریف یک scope مانند with_title_like در مدل، استفاده را قابلاعتمادتر میکند. برای کارایی، اضافه کردن index روی title و همچنین index روی created_at به بهبود جستجوها کمک میکند و اگر نیاز به جستجوهای پیچیدهتری دارید، میتوانید از full-text search استفاده کنید. به تدریج میتوانید این کوئری را در seeds یا در کنسول Rails تست کنید.
گزارش