2010-04-01 4 views
1

사용자가 쉼표로 구분 된 로그인 목록을 입력하여 새 메모/게시물을 만들 때 전자 메일로 알려주기를 원합니다. form helper text_field 대신에 form_tag_helper 'text_area_tag'를 사용할 것이므로이 목록을 데이터베이스에 저장하고 싶지 않습니다. 코멘트/게시물이 생성 될 때 이메일을 보내야하는 'after_save'옵저버가 있습니다. 내가 아는 한, after_save 이벤트는 모델 객체 만 인수로 사용하므로이 비 모델 백업 목록을 관찰자에게 전달하여 cc 목록에서 사용하는 메일러 메소드로 전달하는 방법은 무엇입니까?after_save 옵저버에 대한 rails 인수

감사합니다.

답변

4

virtual attribute에 목록을 저장하려고합니다. after_save 콜백에서 사용할 수 있습니다.

+0

감사합니다. 나는 이것을 시험해 보겠습니다. – user290870

+0

덕분에이 작품을 – user290870

0

나는 더 나은 방법은 테이블없는 모델을 사용하는 것입니다. 예를 들어 Railscatsts screencast을보십시오. 꽤 간단합니다.

+0

다른 양식 필드를 테이블에 저장하고 싶습니다. 로그인 목록이있는이 특정 필드가 아닙니다. 이것을 위해 별도의 모델을 만들어야합니까? – user290870

+0

왜 안 되니? 이 스크린 캐스트에서와 같은 상황입니다. 새로운 댓글이나 게시물을 추천합니다. 주석과 게시물이 앱의 다른 모델 인 경우이 모델과 다형성의 연관성을 가질 수도 있습니다 (권장). 자세한 내용은 해당 스크린 캐스트를 찾아보십시오. – Voldy

+0

안녕하세요, 데이터베이스에 하나만 제외하고 양식에 모든 필드를 저장하고 싶습니다. 여기서 하나의 필드에 대한 별도의 모델을 만드는 것은 과부하처럼 보이지만 작동 할 수 있습니다. getter 및 setter 메서드를 사용하여 현재 모델 객체에 대한 새 인스턴스 변수를 만드는 것이 훨씬 더 좋은 해결책이라고 생각합니다. 감사합니다 – user290870

0

사용자 모델의 가상 속성과 양식에 필요한 모델은 다음과 같습니다.

# app/models/user.rb 
class User < ActiveRecord::Base 
# virutal attribute and validations 
attr_accessor :unpersisted_info 
validates_presence_of :unpersisted_info 
end 

# app/models/user_observer.rb 
class UserObserver < ActiveRecord::Observer 
    def after_save(user) 
    # logic here... 
    end 
end 

# form for view... 
<%form_for @user do |f|%> 
    <%= f.text_field :unpersisted_info %> 
    <%= f.submit "Go" %> 
<%end%> 
+0

당신은 "unpersisted_info"속성에 액세스 할 수 있습니다 after_save 방법 데프 after_save (사용자) self.unpersisted_info.split (","). each {| item | p item} end – seanb123

관련 문제