направляет аргументы наблюдателю after_save - PullRequest
1 голос
/ 01 апреля 2010

Я хочу, чтобы пользователи вводили разделенный запятыми список имен для входа в форму, чтобы получать уведомления по электронной почте при создании нового комментария / сообщения. Я не хочу хранить этот список в базе данных, поэтому я бы использовал form_tag_helper 'text_area_tag' вместо text_field помощника формы. У меня есть наблюдатель 'after_save', который должен отправить электронное письмо при создании комментария / публикации. Насколько мне известно, событие after_save принимает в качестве аргумента только объект модели, так как я могу передать этот список имен входа без поддержки модели наблюдателю для передачи методу Mailer, который использует их в списке cc.

спасибо

Ответы [ 3 ]

4 голосов
/ 01 апреля 2010

Вы хотите сохранить список в виртуальном атрибуте . Он будет доступен в ответном вызове after_save.

0 голосов
/ 02 апреля 2010

Вот модели, которые вам понадобятся (вместе с формой) и виртуальный атрибут в пользовательской модели.

# 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 голосов
/ 01 апреля 2010

Я думаю, что лучшим способом будет использование модели без таблиц. Посмотрите на Railscatsts screencast для примера. Это довольно просто.

...