0
class User
has_one :settings

class Settings
belongs_to :user

私は何かをしたい

@user_with_no_settings = User.where(:settings => nil)

しかし、これは空のリレーションを返します。

関連する設定がないすべてのユーザーを見つけるにはどうすればよいですか? (だから私はそれらを見つけて作成します)

4

2 に答える 2

3

最も重要なのは、関連付けが正しくないことです。

次のように変更します。

class User
has_one :setting

class Settings
belongs_to :user

クラス名は複数形ですが、関連付けhas_oneは常に単数形です。そのため、常に複数形である which:settingsに対して forhas_oneを使用することはできません。has_many

これを使って:

User.where("id not in (select user_id from settings)")

上記のクエリは、設定が関連付けられていないすべてのユーザーを提供します。

于 2013-02-22T12:10:29.823 に答える
0

わかった。あなたの状況では、このコードを試してみる必要があるかもしれません。

User.where('id NOT IN (?)', User.joins(:settings).pluck('settings.user_id'))

ただし、Railsコンベンションに従う必要があります。

設定を設定に変更します。

于 2013-02-22T12:26:48.953 に答える