2017-01-08 9 views
0

scopeのモデルでActiveRecord_AssociationRelationの代わりに1つのオブジェクトを返すことができます。例えばRails4;スコープはActiveRecord_AssociationRelationを単一のオブジェクトではなく返す

ActiveRecord_AssociationRelationを返し

scope :primary, -> { where(is_active: true).last } 

だから私はいつもAccount.last.credit_cards.primary.lastのようなものにしています。

これをより効率的に達成するにはどうすればよいですか?

答えて

2

あなたのコードはすでに単一のオブジェクトを返します。これは、代わりにActiveRecord_Relationを返すことをお勧めです:返信用

scope :primary, -> { where(is_active: true).limit(1) } 
+0

ありがとう:このケースでは、あなたの代わりにlastリターンActiveRecord_Relationlimitを使用して

YourObject.scope_1(params).scope_2.where(...) 

のように書くことができます。私はすでに試してみましたが、空の配列 '[]'を返します。 – Tosh

+0

空のスコープを意味します。 – Ilya

+0

私は愚かです。ありがとう。実際には「最後」も機能します。 – Tosh

関連する問題