یک مدل 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 در مدل نیز تبدیل کنید تا قابل‌استفاده‌تر باشد.

توسط پژوهشگر در 201 روز قبل ساعت 03:30
دسته بندی ها: Ruby Ruby for beginner
sara در 201 روز قبل ساعت 06:12

خوب است از 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 تست کنید.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری