3

Rails 3.2.12 アプリでは、顧客モデルに phone 属性があります。顧客を取得するときに電話属性を削除したいと考えています。これが私たちがしたことです:

@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 に答える