레일스에서 e- 러닝을 개발 중이며 e- 러닝의 다양한 섹션을 통해 사용자의 진행 상황을 추적하기 위해 데이터베이스에 배열 세트를 저장하려고합니다. .레일에서 배열 저장 및 검색
나는이 질문에 대답 건너했습니다
Storing arrays in database : JSON vs. serialized array
...이 유용 할 수 있습니다처럼 들리 겠지만 나는 내가 개발하고 있어요 레일 프로젝트에 통합하는 방법을 알아낼 수 없습니다.
나는 레일스 멍청한 녀석이라는 것을 감안할 때, 누군가가 나에게 어떻게 설명 할 수 있었는지, 보통 영어로 (또는 대안으로 일반 코드로) 어떻게 표현할 수 있겠는가?
a) 데이터베이스에 ' false '사용자가 처음 가입 할 때 부울입니다.
b) 전자 학습을 통해 다양한 페이지에서 Array를 검색하고 업데이트합니다.
나는 내가 시도한 것을 설명 하겠지만, 어둠 속에서는 찌르는듯한 찌르다가 어디서부터 시작해야할지 몰라. Comment 클래스는 controllers 폴더에 저장해야합니까? 또는 내 예제에서 실제로 User 클래스입니까? (비슷하게 ActiveRecord를 확장합니다)?
다시 한번 말하지만 (코드가 어디에 속하는 지 이상적으로 설명하는) 도움이 되서 감사합니다. ,
내가 (예상) 이메일, 사용자 이름 등 여러 분야를 가지고 데이터베이스에서 사용자 테이블이 있습니다
UPDATE는
좀 더 구체적으로 물어 봤는데, 그래서 나는 시도 할 것이다 나는 사용자 테이블에 5 개의 필드를 추가하고 각각 5 개의 섹션을 통해 사용자의 진행 상황을 추적하는 Array를 저장하고 싶습니다. 나는 사용자가 컨텐트를 열면 Array가 업데이트되고 해당 인덱스가 'true'로 업데이트되어 섹션의 일부가 완료되었음을 알립니다. 나는 희망이 도움이
...
사용자가 첫 번째 징후가 나는 배열이 '거짓'부울의 순서로 설정해야 할
RE-UPDATE. 어떤 파일에서 배열을 설정할 수 있습니까? 그것은 사용자로 이루어 졌습니까? 나는 이것을 시도하고 있지만, 값이 설정되고 있다고는 생각하지 않습니다. 오류가 발생하지는 않습니다.
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
serialize :leadership_styles_progress
serialize :skills_progress
serialize :safeguarding_progress
serialize :tools_progress
before_create :set_progress_vars
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
validates :age, presence: { :message => ": Please choose your age" }
validates :section, presence: { :message => ": Please choose the section you belong to"}
has_many :posts
private
def set_progress_vars
self.leadership_styles_progress = [false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false]
self.skills_progress = [false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false]
self.safeguarding_progress = [false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false]
self.tools_progress = [false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false]
end
end
나는 '레이크 루트'를 통해 어디에 어떤 경로가 매핑되는지 확인했습니다. users/sign_up은 devise/registrations/new에 매핑됩니다. 아래에 제안 된 serialize 코드는 거기에 있습니까?
조금 더 명확하게 설명해 주실 수 있습니까? 사용자는 많은 페이지가있는 코스를 가지고 있으며 방문한 페이지를 저장하고 싶습니까? 이상적으로는 관련 테이블 만있는 간단한 db 구조의 일부 형태가 유용 할 것입니다 –
이 배열을 쿼리해야합니까? 그렇다면'serialize'가 적이며리스트를 위해 별도의 컬럼이나 별도의 테이블을 사용하는 것이 더 낫습니다. –
사용자가 로그인 할 때 (UP 기호와 반대) Array를 deserialize하고 로컬 변수에로드해야합니다 (가정). 새로운 콘텐츠를 볼 때 데이터베이스에서 Array를 업데이트하려고합니다. 그걸 '직렬화'할 수 있습니까? – moosefetcher