환경 범위를 사용하여 -, 비 사용자 내부에서의 CURRENT_USER의 user.superuser 위해 true 또는 false를 반환합니다 하나를 범위로 재생하고 생성하려고 루비 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
list.html.haml
%h5
= "Is the user a superuser? #{Appliance.superuser(current_user).to_s}"
레일 콘솔 오 경우 0> Appliance.superuser (CURRENT_USER)
가=> 진정한
레일 본체 : 007 : 수퍼을 갖는다 SER은 (주) 참
irb(main):006:0* current_user = User.first User Load ... #<User id: 3, superuser: true>
IRB 특성 집합 수퍼 유저 속성이 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 * "가전"
=> # 액티브 :: 관계 [# FROM. 어플라이언스 ID : 1, ... updated_at : "...">, #Appliance 아이디 : 2, ... updated_at : "...">]>
은 기본적으로는 Appliance.all 반환 덤핑 것 false 대신 ActiveRecord_relation. 왜 이런 일이 일어 났는지 설명 할 수 있습니까? 레일로
api 당
감사합니다. 나는 그것을 읽은 것을 기억하지만, 나는 그것을 완전히 이해하지 못했을 것입니다. – Bayless
문제 없습니다. 때로는 나와 함께 일어난다. – Sajan