Rails 管理对象在索引列表视图中呈现为 `#<User:`
Rails admin object rendering as `#<User:` in the index list view
我的模型函数:
def admin_user
users.where('roles @> ARRAY[?]::varchar[]', ['admin']).first
end
我的管理员配置:
config.model 'Team' do
list do
field :admin_user
end
end
显示如下:
如何link进入用户管理视图?
它显示 #<User:0x0....>
的原因是因为您的 admin_user
return 是 ActiveRecord 的一个实例。当 RailsAdmin 输出时,它调用它的 #to_s
方法,默认情况下 return 上面的输出。您可以覆盖该方法,使其看起来像这样:
# User class
def to_s
name
end
或者如果您愿意,您可以将 admin_user
修改为 return 格式正确的字符串而不是 ActiveRecord。
为了 'make it link to the User admin view' 在您的 config.model
中需要多一点配置。您需要为其定义一个 pretty_value
并覆盖默认渲染。
config.model 'Team' do
pretty_value do
# user's active record
user = bindings[:object]
# path to its RailsAdmin 'show' page
path = bindings[:view].show_path(model_name: 'User', id: bindings[:object].id)
# <a href...> tag to it
bindings[:view].tag(:a, href: path) << user.admin_user
end
end
请记住,最后一行中的 user.admin_user
假设它 return 是您想要在 link 或 User
中具有正确定义的字符串 #to_s
.
这里有一个link官方文档https://github.com/sferik/rails_admin/wiki/Custom-list-fields-as-HTML-tags
还有一个办法
您可以创建另一个模型
class AdminUser < 用户
定义 self.default_scope
其中('roles @> ARRAY[?]::varchar[]',['admin'])
结束
after_initialize do
self.roles << ['admin']
end
结束
然后是团队模式
class 团队
belongs_to :admin_user, foreign_key: :user_id
rails_admin do
list do
field :admin_user
end
end
结束
这不仅会在团队索引中显示正确的内容,还允许您通过管理员的属性(如姓名或电子邮件)过滤和搜索团队,还允许您创建管理员有自己的索引和编辑视图。
这可能有点矫枉过正,但它肯定也会解决你的问题。
我的模型函数:
def admin_user
users.where('roles @> ARRAY[?]::varchar[]', ['admin']).first
end
我的管理员配置:
config.model 'Team' do
list do
field :admin_user
end
end
显示如下:
如何link进入用户管理视图?
它显示 #<User:0x0....>
的原因是因为您的 admin_user
return 是 ActiveRecord 的一个实例。当 RailsAdmin 输出时,它调用它的 #to_s
方法,默认情况下 return 上面的输出。您可以覆盖该方法,使其看起来像这样:
# User class
def to_s
name
end
或者如果您愿意,您可以将 admin_user
修改为 return 格式正确的字符串而不是 ActiveRecord。
为了 'make it link to the User admin view' 在您的 config.model
中需要多一点配置。您需要为其定义一个 pretty_value
并覆盖默认渲染。
config.model 'Team' do
pretty_value do
# user's active record
user = bindings[:object]
# path to its RailsAdmin 'show' page
path = bindings[:view].show_path(model_name: 'User', id: bindings[:object].id)
# <a href...> tag to it
bindings[:view].tag(:a, href: path) << user.admin_user
end
end
请记住,最后一行中的 user.admin_user
假设它 return 是您想要在 link 或 User
中具有正确定义的字符串 #to_s
.
这里有一个link官方文档https://github.com/sferik/rails_admin/wiki/Custom-list-fields-as-HTML-tags
还有一个办法 您可以创建另一个模型
class AdminUser < 用户 定义 self.default_scope 其中('roles @> ARRAY[?]::varchar[]',['admin']) 结束
after_initialize do
self.roles << ['admin']
end
结束
然后是团队模式 class 团队 belongs_to :admin_user, foreign_key: :user_id
rails_admin do
list do
field :admin_user
end
end
结束
这不仅会在团队索引中显示正确的内容,还允许您通过管理员的属性(如姓名或电子邮件)过滤和搜索团队,还允许您创建管理员有自己的索引和编辑视图。 这可能有点矫枉过正,但它肯定也会解决你的问题。