3

使用我们的 rails 3.2.12 应用程序的客户模型中有电话属性。我们想在检索客户时删除电话属性。这是我们所做的:

@customers = Customer.all
@customers.delete :phone

但是有错误:

delete_all doesn't support limit scope

从模型对象中删除属性的正确方法是什么?谢谢。

4

2 回答 2

4

您可以使用它Customer.select('name, address')来仅检索您想要的字段。请注意,您传递了一个带有逗号分隔字段的字符串。

这将生成一个这样的 SQL 请求

SELECT customer.name, customer.address FROM customer

然后,您只获取您想要的数据,而不将其从数据库中删除(这是您最初的调用试图做的)。

我最初的回复显示 pluck 的使用不正确,它只适用于单列。

于 2013-03-18T05:56:42.280 回答
1

我知道您使用的是 Rails 3.2.12,但在 Rails 4 中 pluck 也适用于多列,允许类似

Customer.pluck(:name, :address)
于 2014-07-08T09:12:16.117 回答