私はfoo
とbar
の2種類があり、foo
は多くがbars
です。ActiveRecord保持スコープカプセル化
Bar
は、特定の期間発生するイベントです。そのため、現在アクティブなバーを持つフォームを表すActiveRecord::Relation
を返すメソッドまたはスコープが必要です。
これは、スコープとFoo
クラスでは十分に簡単です:、私はこのことについては好きではない何
class Foo < ActiveRecord::Base
has_many :bars
scope :has_current_bars, joins(:bars).where('bar.foo_id IS NOT NULL').where('bar.starts_at <= ?', DateTime.now).where('bar.ends_at >= ?', DateTime.now)
foo
がbar
の内部に関する非常に多くを知っている必要があるということです。
にスコープを追加することでこれを書き換えることができるので、foo
はbar
の属性を知る必要はありませんか?
実際、あなたはそれらが混ざっているかもしれないと思います。 – DanneManne
@DanneManneあなたが正しいです、私はそれを後方に読んでいます。編集されました。 – vonconrad
これは私が持っているものとは少し異なります。私の場合は、現在のバーを持つフォースが返されます。あなたが言及しているように、fooを指定すると現在のバーが返されます – SooDesuNe