Rails4のhas_many throughで条件を指定してレコードを参照する
目的
Rails4のhas_many throughで条件を指定してレコードを参照する
前提
rails 4.0.0を使います。 テーブルは以下のように作っているとします。
#relationshipテーブル id: integer member_id: integer event_id: integer flg: boolean status: integer #memberテーブル id: integer #eventテーブル id: integer
model/relationship.rb
まずはrelationshipモデルで関連付けをします。
belongs_to :member, class_name: "Member" belongs_to :event, class_name: "Event"
model/event.rb
次にeventモデルで参照について記述します。 ここでは、relationshipテーブルのflgカラムがtrueのレコードと、statusカラムが'3'のレコードを取得しています。
has_many :relationships, foreign_key: "event_id", dependent: :destroy has_many :hoge, -> {where flg: true}, class_name: "Relationship", through: :relationships, source: :member has_many :fuga, -> { where "status = 3"}, through: :relationships, source: :member
以上でhas_many throughで条件を指定してレコードを参照することができます。