RailsAdmin关联在新字段中的范围

时间:2015-08-18 18:31:40

标签: ruby-on-rails associations rails-activerecord rails-admin

假设我有一个模型Post和一个模型作者,以及一个作者has_many帖子。邮政还有一个州“#39;属性和范围,我可以通过Post.where过滤(状态:'活动')。在RailsAdmin中,我希望在“作者”页面中有两个字段:posts和active_posts,其中active_posts的范围仅限于具有活动状态的关联帖子。我尝试过以下方法:

config.model 'Author' do
  field :posts
  field :active_posts do
    formatted_value do
      bindings[:object].posts.active
    end
  end
end

显然,这不会起作用,因为这只是将ActiveRecord Association显示为格式化值。

我还尝试在作者模型上定义一个active_posts方法,只调用config.model' Author'的字段:active_posts,但这也只返回一个关联。

另一方面,关于范围界定的维基(https://github.com/sferik/rails_admin/wiki/Associations-scoping)之类的东西根本不起作用(帖子字段显示所有相关帖子,而不是范围内的帖子)。此外,此方法只会为我提供一个仅显示活动帖子的帖子字段。

config.model 'Author' do
  field :posts do
    associated_collection_cache_all false 
    associated_collection_scope do
      Proc.new { |scope|
        scope = scope.where(state: 'active')
      }
    end
  end
end

有替代方法吗?

1 个答案:

答案 0 :(得分:0)

我最终只创建了一个链接列表:

field :active_posts do
  formatted_value do
    posts = bindings[:object].posts.active
    posts.collect { |p| "<a href='/admin/post/#{p.id}'>#{p.title}</a>" }.join(", ").html_safe
  end
end

我希望有一种更漂亮的方式,但这也有效。