小编kim*_*rey的帖子

如何使用新方法扩展 ActiveRecord 关系?

假设我有这样的简单 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 中执行此操作的正确方法是什么?在所有这种情况下,我如何访问当前关系?

activerecord ruby-on-rails

5
推荐指数
1
解决办法
1505
查看次数

标签 统计

activerecord ×1

ruby-on-rails ×1