Ruby on rails 5 RailsAdmin::MainController#编辑中的NoMethodError

Ruby on rails 5 RailsAdmin::MainController#编辑中的NoMethodError,ruby-on-rails-5,rails-admin,Ruby On Rails 5,Rails Admin,我的rails管理员中有存款和钱包模型。我使用的钱包存款模式如下: wal=Wallet.where(user_id: self.user_id) wal.balance = wal.balance + self.amount wal.save! 错误: NoMethodError in RailsAdmin::MainController#edit 结果 puts wal.inspect 是 任何帮助都将不胜感激。提前感谢。。其中始终返回关系而不是对象。关系基本上是一组对象。无论搜索返回

我的rails管理员中有存款和钱包模型。我使用的钱包存款模式如下:

wal=Wallet.where(user_id: self.user_id)
wal.balance = wal.balance + self.amount
wal.save!
错误:

NoMethodError in RailsAdmin::MainController#edit
结果

puts wal.inspect


任何帮助都将不胜感激。提前感谢。

。其中
始终返回关系而不是对象。关系基本上是一组对象。无论搜索返回一个、零个或多个对象

因此,干净的方法与您的方法类似。您只需在关系数组的索引0位置选择对象

wal = Wallet.where(user_id: self.user_id).first
另一种方法是向用户模型添加关系。假设您确保用户始终只有一个钱包,并且您可以使用该用户

# model
has_one :wallet
# controller
user = User.find(self.user_id)
wal = user.wallet
“查找”始终返回一个对象(如果存在),因为只能有一个对象。 还有一种方法可以是
。通过
查找\u。它与“查找”类似,但适用于其他对象字段。为此,您必须确保每个用户只有一个钱包,因为
find\u by
只返回第一个对象,即使有多个对象与查询匹配

Wallet.find_by(user_id: self.user_id)

最后两个示例的优点是,当不存在匹配项时,它们返回一个
ActiveRecord::RecordNotFound
。其中
仅返回空的关系数组

。其中
始终返回关系而不是对象。关系基本上是一组对象。无论搜索返回一个、零个或多个对象

因此,干净的方法与您的方法类似。您只需在关系数组的索引0位置选择对象

wal = Wallet.where(user_id: self.user_id).first
另一种方法是向用户模型添加关系。假设您确保用户始终只有一个钱包,并且您可以使用该用户

# model
has_one :wallet
# controller
user = User.find(self.user_id)
wal = user.wallet
“查找”始终返回一个对象(如果存在),因为只能有一个对象。 还有一种方法可以是
。通过
查找\u。它与“查找”类似,但适用于其他对象字段。为此,您必须确保每个用户只有一个钱包,因为
find\u by
只返回第一个对象,即使有多个对象与查询匹配

Wallet.find_by(user_id: self.user_id)

最后两个示例的优点是,当不存在匹配项时,它们返回一个
ActiveRecord::RecordNotFound
。其中
仅返回空的关系数组

非常感谢你。这对我帮助很大,非常感谢。这对我帮助很大。