class User
has_one :settings
class Settings
belongs_to :user
我想做类似的事情
@user_with_no_settings = User.where(:settings => nil)
但这会返回一个空关系。
如何找到所有没有相关设置的用户?(所以我会找到它们并创建它们)
class User
has_one :settings
class Settings
belongs_to :user
我想做类似的事情
@user_with_no_settings = User.where(:settings => nil)
但这会返回一个空关系。
如何找到所有没有相关设置的用户?(所以我会找到它们并创建它们)
最重要的是,您的关联不正确;
将其更改为:
class User
has_one :setting
class Settings
belongs_to :user
类名是复数,但关联has_one
总是单数。所以你不能使用:settings
forhas_one
作为反对has_many
它总是复数。
用这个:
User.where("id not in (select user_id from settings)")
上面的查询将给出所有没有关联设置的用户。
好的。在您的情况下,您可能需要一些尝试此代码。
User.where('id NOT IN (?)', User.joins(:settings).pluck('settings.user_id'))
但是,您需要遵循 Rails 约定。
将设置更改为设置。