使用 ActiveRecord 关系号访问记录参数
access to record params with ActiveRecord relation number
我试图通过在我的一个模型中添加这两行来在数据库中获取记录:
a = Arel::Table.new(:receivers)
e = Receiver.where(a[:name].matches('%afsane%'))
在我的接收器中 table 我有一行,其中名称列等于 "afsane"。我想在我的模型中包含该行的 ID。
但是通过在我的模型中打印 e 我得到了这个:
"========#<Receiver::ActiveRecord_Relation:0x0056094261eff8>============"
它给出了关系号但没有参数。
当我在 rails 控制台中 运行 他们时,我得到了这样的回复:
#<ActiveRecord::Relation [#<Receiver id: 2, name: "afsane", created_at: "2016-09-27 09:24:16", updated_at: "2016-10-09 10:10:02">]>
我设法在我的模型中加入了这个但是我做不到。
ps:使用Rails 5.
有什么想法吗?
我不确定变量 a
是什么样子,但变量 e
是 一个集合。
where
return 是一个集合,这意味着您必须遍历 e
才能提取一些数据。
像这样:
e.each do |data|
data.name
end
如果您只想 return 1 个结果,那么您可以简单地执行以下操作:
e = Receiver.where(a[:name].matches('%afsane%')).limit(1)
注意:我的答案很简单,但有更优雅的解决方案,所以我建议您阅读 ActiveRecord Rails Guides
我试图通过在我的一个模型中添加这两行来在数据库中获取记录:
a = Arel::Table.new(:receivers)
e = Receiver.where(a[:name].matches('%afsane%'))
在我的接收器中 table 我有一行,其中名称列等于 "afsane"。我想在我的模型中包含该行的 ID。 但是通过在我的模型中打印 e 我得到了这个:
"========#<Receiver::ActiveRecord_Relation:0x0056094261eff8>============"
它给出了关系号但没有参数。 当我在 rails 控制台中 运行 他们时,我得到了这样的回复:
#<ActiveRecord::Relation [#<Receiver id: 2, name: "afsane", created_at: "2016-09-27 09:24:16", updated_at: "2016-10-09 10:10:02">]>
我设法在我的模型中加入了这个但是我做不到。
ps:使用Rails 5.
有什么想法吗?
我不确定变量 a
是什么样子,但变量 e
是 一个集合。
where
return 是一个集合,这意味着您必须遍历 e
才能提取一些数据。
像这样:
e.each do |data|
data.name
end
如果您只想 return 1 个结果,那么您可以简单地执行以下操作:
e = Receiver.where(a[:name].matches('%afsane%')).limit(1)
注意:我的答案很简单,但有更优雅的解决方案,所以我建议您阅读 ActiveRecord Rails Guides