環境のスコープを使用して - 、非ユーザーの中から、CURRENT_USERのuser.superuserためにtrueまたはfalseを返します1をスコープと遊ぶし、作成しようとすると、Rubyの2.3予期しない出力
を4.2レールモデル/コントローラ。私はcurrent_user.superuser = trueのときに期待される出力を得ていますが、falseはちょうど左のフィールドに出ます。
内訳照会する場合の
appliance.rb(モデル)
scope :superuser, ->(user) { user.superuser ? true : false }
appliance_controller.rb
def list
@appliances = Appliance.all.order(:idtag)
@users = User.all
end
%h5
= "Is the user a superuser? #{Appliance.superuser(current_user).to_s}"
list.html.hamlレールコンソールau 007:0> Appliance.superuser(CURRENT_USER)
=>真
のRailsコンソール真
irb(main):006:0* current_user = User.first User Load ... #<User id: 3, superuser: true>
IRB(メイン)に設定し、スーパーユーザ属性を持つSERスーパーユーザー属性がfalseに設定されているユーザーにクエリを実行します。
irb(main):008:0> current_user = User.last User Load # User id: 6, superuser: false>
IRB(メイン):010:0 * Appliance.superuser(CURRENT_USER)
アプライアンスロード(4.1ms)は、 "アプライアンス" をSELECT * "家電"
=>#のActiveRecord ::関係[#FROM。アプライアンスID:1、... updated_at: "...">、#Appliance ID:2、... updated_at: "...">]>
基本的にAppliance.allをダンプして返しますfalseではなくActiveRecord_relationなぜこれが起こっているのか誰も説明できますか?レールapi 1として
私はそれを読んで覚えていますが、私はそれを完全に理解していなかったと思います。 – Bayless
問題ありません。時々、私と一緒にも起こる。 – Sajan