私は初心者で、自分のコードを専門家に見せたところhas_many
、変数をフィルタリングするために使用すべきではないと言われましたが、scopes
.
ユーザー、製品、所有権の 3 つのモデルがあります。
これがapp/models/user.rbの私のコードです:
class User
has_many :ownerships, foreign_key: "offerer_id",
dependent: :destroy
has_many :owned_products, through: :ownerships,
source: :product
has_many :future_ownerships, -> { where owning_date: nil, giving_date: nil },
class_name: "Ownership",
foreign_key: "offerer_id"
has_many :wanted_products, through: :future_ownerships,
source: :product
end
has_many :future_ownerships
そこで、 andを削除し、 app/models/ownership.rbhas_many :wanted_products
にスコープを作成しました:
class Ownership
scope :future, -> { where owning_date: nil, giving_date: nil }
end
これで、将来の所有権を見つけることができます: user.ownerships.future
. しかし、私が知らないのは、欲しい商品を取得する方法ですか?app/models/product.rbにスコープを作成して、そのようなものを入力できるようにするにはどうすればよいですか:
user.owned_products.wanted