ユーザと産業の2つのテーブルがあります。ユーザーは多くの業界に関連し、多くのユーザーが1つの業界に属します。has_scopeを使用して多対多の表を持つオブジェクトをフィルタする
Industry.rb
class Industry <ApplicationRecord
has_many: users,: through =>: industry_users
has_many: industry_users
end
User.rb
class User <ApplicationRecord
belongs_to: specialty
has_many: industries,: through =>: industry_users
has_many: industry_users
scope: by_specialty, -> specialty {where (: specialty_id => specialty)}
scope: by_period, -> started_at, ended_at {where ("graduation_date> =? AND graduation_date <=?", started_at, ended_at)}
end
IndustryUser.rb
それらの間の関係はmany_to_manyです。 2つの列を格納する3番目の表IndustryUserがあります。
class IndustryUser <ApplicationRecord
belongs_to: user
belongs_to: industry
end
今私はAPIを開発しています。私はhas_scope gemを使用してgetリクエストのパラメータでユーザをフィルタリングします。上では、私は専門と卒業の日付でそれらをうまくフィルタリングしました。 たとえば、専門分野のフィルタリング。
http://localhost:3000/v1/users?by_specialty=1
卒業の日付までにフィルタリングする。一定の期間を提供する必要があります。
http://localhost:3000/v1/users?
by_period[started_at]=20040101&by_period[ended_at]=20070101
特定の業界に属するユーザーを取得したいと思ったときに、私は立ち往生しました。 はここでGETクエリ例えば
http://localhost:3000/v1/users?by_industry=2
の一例です。ここでは、第2業界に関連するすべてのユーザーを表示したいと考えています。 誰もhas_scopeを使って多対多リレーションに関連するオブジェクトをフィルタリングする方法を知っていますか?
私があなたに提案した範囲を入れました。エラーがあります。 –
エラーは? – jvillian
"#