連絡先にはユーザーが割り当てられています。
class Contact < ActiveRecord::Base
...
belongs_to :user
...
end
ユーザー モデルには、ユーザー オブジェクトまたはオブジェクトが db から返されるたびに除外したいフィールドがあります。これを機能させる方法の 1 つは、デフォルトのスコープを追加することです。
class User < ActiveRecord::Base
...
has_many :contacts
...
default_scope select((column_names - ['encrypted_password']).map { |column_name| "`#{table_name}`.`#{column_name}`"})
end
したがって、コンソールで次のようにします。
User.first
select ステートメントと結果セットに「encrypted_password」が含まれていません。
しかし、もしそうなら:
c = Contact.includes(:user).first
c.user
彼らはそうします。この場合、ユーザー モデルのデフォルト スコープは適用されず、「encrypted_password」フィールドが表示されます。
だから私の質問はなぜですか?また、関連するオブジェクトでどのフィールドを返す必要があるかを明確に指定する方法はありますか?