假设我有一个模型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
有替代方法吗?
答案 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
我希望有一种更漂亮的方式,但这也有效。