1

新しいコメント/投稿が作成されたときに電子メールで通知されるように、ユーザーがフォームにログインのカンマ区切りのリストを入力するようにします。このリストをデータベースに保存したくないので、フォーム ヘルパー text_field の代わりに form_tag_helper 'text_area_tag' を使用します。コメント/投稿が作成されたときにメールを送信する「after_save」オブザーバーがあります。私が知る限り、after_save イベントはモデル オブジェクトのみを引数として取ります。そのため、この非モデル ベースのログイン リストをオブザーバーに渡して、それらを cc リストで使用する Mailer メソッドに渡すにはどうすればよいでしょうか。

ありがとう

4

3 に答える 3

4

You want to store the list in a virtual attribute. It will be available in the after_save callback.

于 2010-04-01T18:20:52.087 に答える
0

テーブルレスモデルを使うのが良い方法だと思います。例については、Railscatstsのスクリーンキャストをご覧ください。とても簡単です。

于 2010-04-01T18:03:08.933 に答える
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%>
于 2010-04-01T20:51:11.497 に答える