0

为了使用friendly_id正确搜索我的帖子,我使用了这个查询:

Post.friendly.find(params[:id])

但我需要包装这个方法并将其发送到我的演示者类 gem decent_exposure,. 这给了我一个花哨的地方来包含一个method可以获取我的对象的地方。

默认情况下,此方法是:find. 正如他们的代码中所写:

def finder
  options[:finder] || :find
end

scope.send(finder, id) # scope here would mean Post

如何通过选项发送,这两种方法查询作为符号?

4

2 回答 2

3

如果您在 Post 上定义类方法,请快速查看他们的文档,然后您应该能够使用它。

class Post
  def self.find_with_friendly(id)
    friendly.find(id)
  end
end

然后你可以做

expose(:post, finder: :find_with_friendly)

很确定这应该有效。

于 2015-06-19T11:59:01.760 回答
0

就像是

scope.send(:finder).try(:id) ??

于 2015-06-19T11:53:36.267 回答