Это может быть код, который говорит вам, что вы делаете это на неправильном уровне. Это то, что мне действительно нравится в философии RSpec MOCK ALL THE THE (!!) RSpec: если становится трудно издеваться, возможно, ваш дизайн неправильный.
Например, я могу изменить ваш код следующим образом:
def index
@posts = Post.posts_for(:like => params[:s], :order => (params[:s] ? "title asc" : "date desc")
end
(или что-то немного лучше, учитывая ваш домен.)
Затем вы можете смоделировать Posts.posts_for
, простой вызов метода, вместо того, чтобы пытаться смоделировать тонну цепочечных методов AR.