管理与类名的关系上的gem弃用



型号Transaction

belongs_to :consumer, class_name: 'User'

administratore gem自动获取此关系,并包括模型关系和id

ATTRIBUTE_TYPES = {
user: Field::BelongsTo,
consumer: Field::BelongsTo.with_options(class_name: "User"),
consumer_id: Field::Number,

试图通过关系搜索交易

consumer: Field::BelongsTo.with_options(
class_name: "User",
searchable: true,
searchable_fields: ['first_name', 'last_name', 'email', 'mobile']
),

有一个错误抱怨用户没有

undefined method `+' for nil:NilClass
def display_resource(user)
user ? user.last_name + ', ' + user.first_name : "No user provided"
end

其在堆栈中正在调用user_ dashboard使用自动生成的ATTRIBUTE_TYPES 的consumer: Field::BelongsTo.with_options(class_name: "User")定义时也会发生此错误

user.nil是一个误导性错误,如:

> Transaction.where('consumer_id IS NULL').size
=> 0

user_id也会发生同样的情况
如果删除class_name,则直观地预期会出现错误响应:uninitialized constant Consumer

自定义仪表板的文档指示选项设置:

:class_name (deprecated) - Specifies the name of the associated class.

但是所得到的去除表明这是必要的。如果在事务集合中调用consumer_id,则会正确显示。

如何显示此消费者?

管理(0.14.0(
轨道(6.0.3.6(

您有这个代码和这个错误:

# The code
def display_resource(user)
user ? user.last_name + ', ' + user.first_name : "No user provided"
end
# The error
# !> undefined method `+' for nil:NilClass

该错误与用户为零无关。该错误表示您正在尝试将+应用于nil,而您是而不是试图将+应用于用户:您正尝试将其应用于user.last_nameuser.first_name(以及", "(。

零是您期望1(存在,2(为字符串的其中一个值。失败的一种可能方式是用户缺少名字。

这里有一种绕过这种可能性的方法:

def display_resource(user)
user ? [user.last_name, user.first_name].compact.join(", ") : "No user provided"
end

相关内容

  • 没有找到相关文章

最新更新