0
next_review
が現在の時刻より前のすべてのカード(ユーザに属している)を見つけたい場合はTime.zone.now
です。以下はRailsで1対1の関連付けを使ってモデルに問い合わせる方法
私はを考えて何
class User < ActiveRecord::Base
has_many :cards
def next_cards
cards.next_cards
end
end
class Card < ActiveRecord::Base
has_one :meta
def next_cards
# what should I write here?
end
end
class Meta < ActiveRecord::Base
belongs_to :card
# what should I write here?
end
、対応するモデル内の私のファインダメソッドを維持する必要があり
が行動
を期待し、私のモードであり、
meta
モデルの内側(next_repetition <今日)
- クエリメタテーブルと、すべてのターゲット・メタ(S)
- を取得
card
モデル内のターゲットカードを見つけるために、カードの表に(1)の結果を参加 - リターン
user
モデル
このクエリは、それが属するモデルに分けることはできますか? –
確かに。実際には、 'scope:next_cards、 - > {joins(:meta).where( 'metas.next_review_date <=?'、Time)のように、この関数をCardスコープ(関数ではなく)に分ける方が良いかもしれません。他のモデルの中では何も変更しないでください。 –
制限を渡す必要がある場合、私は質問を –