В приложении Rails 4 область не работает для меня.Rails 4 scope не работает
Модель:
class Todo < ActiveRecord::Base
...
scope :completed, -> { where(completed: true) }
scope :notcompleted, -> { where(completed: false) }
end
Маршруты:
get 'todos/completed'
Контроллер:
class TodosController < ApplicationController
before_action :set_todo, only: [:show, :edit, :update, :destroy]
def completed
@todos = current_user.todos.completed
end
...
def set_todo
@todo = Todo.find(params[:id])
end
Вид:
...
<% @todos.each do |todo| %>
...
Я получаю:
Couldn't find Todo with 'id'=completed
in the set_todo logic
Я не понимаю, почему это ударяет set_todo
логику. Он работает set_todo
, даже если я использую что-то вроде before_action :set_todo, except: [:index, :create, :completed]
Как-то, код set_todo
не должен выполняться!
Хотя это, безусловно, верно, что было бы очень грязно и вводят в заблуждении часть действия контроллера. – ABMagil
Получите ту же ошибку. – Reddirt
У вас есть ассоциация «один-ко-многим», настроенная между пользователями и тодовыми моделями? также, если вы закомментируете код в 'set_todo', эта проблема исчезнет (т. е. вы уверены, что это вызвано здесь) @ABMagil, почему это? – PhilVarg