对于#<ActiveRecord :: Relation []>,未定义的方法`call'

mka*_*a93 1 ruby activerecord ruby-on-rails

 def index
    @posts = Post.published

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @posts }
      format.atom
    end
  end
Run Code Online (Sandbox Code Playgroud)

我正在接受这个错误.我是新的RoR任何人都可以帮助我.我现在能做什么?

Nic*_*eys 7

您已经定义了一个范围但是给它一个关系而不是一个proc.你可能有这样的事情:

class Post < ActiveRecord::Base
  scope :published, where(published: true)
end
Run Code Online (Sandbox Code Playgroud)

把它改成这个:

class Post < ActiveRecord::Base
  scope :published, -> { where(published: true) }
end
Run Code Online (Sandbox Code Playgroud)

将来,始终发布整个堆栈跟踪以及所涉及的方法.猜测发生了什么并不总是这么容易.