假设我有这样的简单 ActiveRecord 模型:
class Post < ActiveRecord::Base
belongs_to :category
end
class Category < ActiveRecord::Base
has_many :posts
has_many :published_posts, -> { where(:published => true) }
end
Run Code Online (Sandbox Code Playgroud)
我想创建一个模块Reindexable,它将添加一个调用reindex到基类中的方法。我希望能够通过以下 3 种方式调用此方法:
Place.reindex
Place.reindex(Place.where(:published => true))
Place.where(:published => true).reindex
Category.first.places.reindex
Run Code Online (Sandbox Code Playgroud)
在这个方法里面,我应该能够做这样的事情:
Reindexer.new(relation).reindex # how can I get relation here?
Run Code Online (Sandbox Code Playgroud)
在 Ruby-on-Rails 中执行此操作的正确方法是什么?在所有这种情况下,我如何访问当前关系?