我有两种模式:
user.rb
属性:name
,gender
和
participation.rb
属性:user_id
+其他一些
用户has_many :participations
参与belongs_to :user
我现在只想知道参与集合中我有多少男性:
@participations = Participation.all
@males = @participations.joins(:user).where(gender: 'male').count
我理解这种方式,我必须通过上述代码段中的参与加入用户模型,但这不起作用。
另一种方法是简单地写:
@males = @participations.users.where(gender: 'male').count
我想我在这里误解了一些必要的东西。 我怎样才能解决我的问题"轨道方式"?
答案 0 :(得分:2)
您也可以使用:includes
@males = @participations.includes(:user).where(users: {gender: 'male'})
答案 1 :(得分:1)
您应该在查询中指定表名,如下所示:
<modification>
<id><![CDATA[Products with future available date become able to show in store and be purchased]]></id>
<version><![CDATA[1.0.0]]></version>
<vqmver><![CDATA[2.0.0]]></vqmver>
<author><![CDATA[angeloop]]></author>
<file name="catalog/model/catalog/product.php">
<operation>
<search position="after"><![CDATA['p.date_added']]></search>
<add><![CDATA[, 'p.date_available']]></add>
</operation>
<operation>
<search position="replace"><![CDATA[AND p.date_available <= NOW()]]> </search>
<add><![CDATA[]]></add>
</operation>
</file>
<file name="system/library/cart.php">
<operation>
<search position="replace"><![CDATA[AND p.date_available <= NOW()]]></search>
<add><![CDATA[]]></add>
</operation>
</file>
</modification>
答案 2 :(得分:0)
我会在用户上定义一个男性范围,然后在合并该范围的参与者上定义一个新的关联“males”或“male_users”,以允许您:
@participations.male_users.count