1
如果有人能幫我寫一個範圍,顯示參加活動的女性人數(女性),我將非常感激。協會的範圍 - Rails 4
模型
user.rb
belongs_to :category_gender
has_many :payments
category_gender.rb
has_many :users
event.rb
belongs_to :user
has_many :payments
payment.rb
belongs_to :user
belongs_to :event
終端
event = Event.find(7)
event_payments = event.payments
2.3.0 :054 > event_payments
[
[0] #<Payment:0x007fea72ac5b70> {
:id => 6,
:email => "[email protected]",
:user_id => 4,
:reference => "SPz_ruZ5om",
:created_at => Wed, 16 Nov 2016 13:52:23 UTC +00:00,
:updated_at => Wed, 16 Nov 2016 13:52:23 UTC +00:00,
:event_id => 7,
:stripe_customer_id => "cus_9YuZZAniFCZVxn",
:stripe_payment_id => "ch_19GTpnAAe71J3vK0aj1gKryO",
:event_payment_date => Wed, 16 Nov 2016 13:52:23 UTC +00:00,
:status => "success"
}
[1] #<Payment:0x007fea72ac5b70> {
:id => 7,
:email => "[email protected]",
:user_id => 5,
:reference => "SPz_mnX4ul",
:created_at => Wed, 16 Nov 2016 13:52:23 UTC +00:00,
:updated_at => Wed, 16 Nov 2016 13:52:23 UTC +00:00,
:event_id => 7,
:stripe_customer_id => "cus_6FhLLMotYCCYvn",
:stripe_payment_id => "ch_20GTunDDt87J3vK1sp4gPry9",
:event_payment_date => Wed, 16 Nov 2016 13:52:23 UTC +00:00,
:status => "success"
}
]
我如何寫一個範圍,找到女性的事件下所取得的所有款項?
如果我寫了下面我可以找到一名女子的首付款:
event.payments.first.user.category_gender.name
2.3.0 :026 > event.payments.first.user.category_gender.name
Payment Load (0.2ms) SELECT "payments".* FROM "payments" WHERE "payments"."event_id" = ? ORDER BY "payments"."id" ASC LIMIT 1 [["event_id", 7]]
User Load (0.1ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1 [["id", 4]]
CategoryGender Load (0.1ms) SELECT "category_genders".* FROM "category_genders" WHERE "category_genders"."id" = ? LIMIT 1 [["id", 2]]
=> "Female"
我嘗試了以下範圍顯示由女性的事件做出的所有款項,但沒有運氣 - 嘗試了方法,但沒有運氣。您的幫助和解釋,將不勝感激對誰寫的這是一個範圍和方法:
event.rb
scope :females, -> { joins(payment: :category_gender).where('category_genders.name' => "Female") }
def females
self.payments.where('user.category_gender.name = ?', "Female")
end
錯誤消息:
2.3.0 :004 > event.females
Payment Load (1.7ms) SELECT "payments".* FROM "payments" WHERE "payments"."event_id" = ? AND (user.category_gender.name = 'Female') [["event_id", 7]]
SQLite3::SQLException: no such column: user.category_gender.name: SELECT "payments".* FROM "payments" WHERE "payments"."event_id" = ? AND (user.category_gender.name = 'Female')
ActiveRecord::StatementInvalid: SQLite3::SQLException: no such column: user.category_gender.name: SELECT "payments".* FROM "payments" WHERE "payments"."event_id" = ? AND (user.category_gender.name = 'Female')
at andrey謝謝你soo !!完美作品 – ARTLoe
@ARTLoe歡迎:) –