class User
has_one :settings
class Settings
belongs_to :user
我想做点什么
@user_with_no_settings = User.where(:settings => nil)
但这会返回一个空关系。
如何查找没有与之相关设置的所有用户? (所以我会找到它们并创建它们)
答案 0 :(得分:3)
最重要的是,您的关联不正确;
将其更改为:
class User
has_one :setting
class Settings
belongs_to :user
班级名称是复数,但关联has_one
始终是单数。因此,您无法将:settings
用于has_one
作为has_many
的反对,而User.where("id not in (select user_id from settings)")
始终是复数。
使用此:
{{1}}
上述查询将为所有没有与之关联的设置的用户提供。
答案 1 :(得分:0)
好。在您的情况下,您可能需要尝试此代码。
User.where('id NOT IN (?)', User.joins(:settings).pluck('settings.user_id'))
但是,您需要遵循Rails惯例。
将设置更改为设置。