0
레일에서 STI를 수행하고 싶습니다. 범위가 STI에서 작동하지 않습니다.
require 'rfc822'
class User < AbstractUser
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :confirmable
validates :name, :presence => true
validates :surname, :presence => true
validates :title, :presence => true
validates :password, :presence => true, :length => { :minimum => 8 }
validates :email, :presence => true, :format => { :with => RFC822::EMAIL_REGEXP_WHOLE }
attr_accessible :name, :surname, :title, :organization,
:email, :password, :fullname
end
require 'rfc822'
class UserForAdmin < AbstractUser
validates :email, :presence => true, :format => { :with => RFC822::EMAIL_REGEXP_WHOLE }
validates :organization_id, :presence => true
attr_accessible :name, :surname, :title, :organization, :email,
:password, :fullname, :password_confirmation, :type,
:organization_id, :waitlist, :invitation_token
end
그리고이 범위에 일부 문제가
class AbstractUser < ActiveRecord::Base
self.table_name = 'users'
belongs_to :organization, :inverse_of => :users
# reporter user
has_many :requests, :dependent => :destroy
# startup user
has_many :responses, :dependent => :destroy
has_many :startup_requests, :through => :responses, :source => :request
scope :reporters, where(:type => 'Reporter')
scope :startup_employees, where(:type => 'Startup')
scope :on_waitlist, where(:waitlist => true)
scope :not_on_waitlist, where(:waitlist => false)
end
.
Couldn't find UserForAdmin with id=7 [WHERE "users"."type" IN ('UserForAdmin') AND "users"."waitlist" = 'f']
나는 같은 결과
UserForAdmin
대신
AbstractUser
이러한 범위를 넣어했습니다. ActiveAdmin에서 사용하기 때문에 나는 (아마도) 사용자 정의 메서드 대신 범위가 필요합니다. 이 문제를 어떻게 해결할 수 있습니까?
오류 발생 조건은 무엇입니까? 어느 범위에 전화하고 있습니까? 너는 무엇을 기대하니? –
ActiveAdmin의 컨트롤러에서'if UserForAdmin.not_on_waitlist.find (params [: id])'를 시도 할 때 발생합니다. – ciembor
잘못 수행하려고 시도한 쿼리입니까? 네가 한 일은 네가 한 일이라고 생각하니 네가 기대하는 바를 말할 필요가있어. –