gpt4 book ai didi

ruby-on-rails - Rails 管理 - 自定义 has_many

转载 作者:行者123 更新时间:2023-12-04 14:17:11 25 4
gpt4 key购买 nike

我正在使用 administrate gem .我有一组用户,并在该用户仪表板中显示了一个 has_many 关系。

现在,我的 user_dashboard 看起来像

class UserDashboard < Administrate::BaseDashboard
# ATTRIBUTE_TYPES
# a hash that describes the type of each of the model's fields.
#
# Each different type represents an Administrate::Field object,
# which determines how the attribute is displayed
# on pages throughout the dashboard.
ATTRIBUTE_TYPES = {
...
sub_items: Field::HasMany.with_options(limit: 10)
}

现在,这在默认情况下有效,但问题是它为用户显示所有 sub_items,这通常没问题,但我正在尝试 显示具有特定类型的has_many 关系。例如,默认情况下我不想显示所有 user.sub_items,我只想显示用户。 sub_items.where(类别:[arr_of_options],子类别:[arr_of_options])

现在,我已经尝试过了

  • 传递这里显示的选项https://github.com/thoughtbot/administrate/blob/master/docs/customizing_dashboards.md但是 Field::HasMany
  • 没有集合/条件选项
  • 仅在 View 中显示特定的 has_many 集合,在本例中为 admin/users/show.html.erb。这可能是可能的,但在这里这样做似乎真的很麻烦
  • 尝试在 admin/users_controller 中进行过滤,但我相信 Controller 只给我 requested_resource 而不是该资源上的子对象

有谁知道我如何只能在管理仪表板中显示某些 has_many 对象?

最佳答案

要仅显示 has_many 关系的特定范围,请执行以下操作。

首先,在模型类上,创建一个新的 has_many 关系,与原始关系平行,名称不同,具有所需的范围。例如,在与 Adminstrate 源代码捆绑在一起的示例应用程序中,我向 Customer 模型添加了一个 new_england_orders 关联:

 class Customer < ApplicationRecord
has_many :orders, dependent: :destroy
+ has_many :new_england_orders, ->{ where(address_state: %w{VT NH MA CT ME RI}) }, class_name: "Order"
belongs_to :country, foreign_key: :country_code, primary_key: :code
has_many :log_entries, as: :logeable

其次,将此关系添加到您的仪表板(可能会替换原来的),并确保添加 class_name 选项,以便管理员知道要使用哪个仪表板:

     lifetime_value: Field::Number.with_options(prefix: "$", decimals: 2),
name: Field::String,
orders: Field::HasMany.with_options(limit: 2, sort_by: :id),
+ new_england_orders: Field::HasMany.with_options(limit: 2, sort_by: :id, class_name: 'Order'),
log_entries: Field::HasManyVariant.with_options(limit: 2, sort_by: :id),
updated_at: Field::DateTime,
kind: Field::Select.with_options(collection: Customer::KINDS),

您的新的、范围内的关联现在应该出现在您的仪表板上。

关于ruby-on-rails - Rails 管理 - 自定义 has_many,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59059701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com