我有两个模型User
和Site
。用户具有“基本和高级”类别。用户与网站1有关 - >许多(即一个用户可以拥有多个站点)。现在我想选择高级用户的网站。有人能告诉我如何使用ActiveRecord
中的where子句来实现这个目标吗?
答案 0 :(得分:2)
我想选择高级用户的网站
这样做
User.includes(:sites).where('users.category = ?', 'premium')
<强> 更新 强>
如果网站也有类似'wordpress或joomla'的类别,我该怎么做 apply where子句仅选择高级用户的wordpress站点
为此你需要像这样调整查询
User.includes(:sites).where('users.category = ? and sites.category = ?', 'premium','wordpress')
答案 1 :(得分:0)
正如您所说,category
是一列,因此Rails会自动为您生成以下方法:
User.find_by_category("basic")
如果您不想使用此方法,可以使用where
方法,您必须在其中发送键值对,如下所示:
User.where(:category => "basic")
如果您找到了所需类别的user
,则只需在其上调用sites
即可获得特定用户的所有关联网站。
答案 2 :(得分:0)
你也可以试试这个:
@user_ids = User.where(category: 'premium').pluck(:id)
@sites = Site.where(user_id: @user_ids)