あなたのクラス メソッドto_csvは関係 (スコープ) で機能するので、@coasters = Coaster.scoped代わりに@coasters = Coaster.all次のように記述します。
format.csv do
@coasters = Coaster.scoped
render text: @coasters.to_csv
end
説明:
あなたのメソッドto_csvはで宣言されてself.いるので、これはクラスメソッドです。このメソッドは、 object またはオブジェクトの配列ではなく、 Coaster classでのみ実行できます。
Coaster.to_csv #good
Coaster.find(1).to_csv #error - Coaster object: undefined method 'to_csv'
Coaster.where('id>5').to_csv #good
Coaster.where('id>5').all.to_csv #error - return array of objects
Coaster.all.to_csv #error
最後の 3 行は Rails 3 に関連していますActiveRecord::Relation: link1、link2。すべてのクラス メソッドはActiveRecord::Relationオブジェクトに対して実行できますがCoaster.all、リレーションではなくオブジェクトの配列を返すことに注意してください。
Coaster.scopedすべてのオブジェクトの ActiveRecord::Relation を返します: http://apidock.com/rails/ActiveRecord/Scoping/Named/ClassMethods/scoped