2012-01-31 22 views
0

ディスカッショントピックに投稿したすべてのユーザーに電子メールを送信する方法を調べるのに苦労しています。私はuser_mailerセットアップとUserMailer.new_post(@ post).deliverをコントローラの正しい場所に持っています。そのトピックに属する投稿を持つユーザーの電子メール(配列)だけを抽出する方法を理解しようとしています。投稿者に電子メールを送信するプロジェクトで投稿を投稿する討議

  • ユーザーhas_manyの投稿
  • トピックにhas_many投稿ユーザーbelongs_toの
  • 投稿をしてもトピック

BELONGS_TO私の擬似コードは次のようになります。

User.emails.where(User.posts == project.post) 

またはその種の何か。

ほとんど同じです。私はブログを持っているとしましょう。そして10人のユーザーのコメント。誰かが新しいコメントを投稿した場合、ActionMailerを起動して10人のユーザー全員に電子メールを送信できるようにしたい。

私はそれらのすべてを:bccの下に1つの電子メールとして入れるか、別々の電子メールとして送信しますか?今のところ、私はそれらを下に追加すると思います:[ar​​ray] .join( "、")のような配列としてのbcc - これは間違っていますか?

ところで:私はあなたが最初の範囲には、ユーザーが欲しいし、その後電子メール属性を選択しますHerokuの、Railsの3.1、およびSendGridアドオン

答えて

2
class Project < ActiveRecord::Base 
    has_many :posts, after_add: :notify_on_new_post 

    def notify_on_new_post(post) 
    users_to_notify = posts.map(&:user).uniq - [post.user] 
    bcc = users_to_notify.map(&:email).compact * ', ' 
    # ... 
    end 
end 

class Post < ActiveRecord::Base 
    belongs_to :project 
    belongs_to :user 
end 

class User < ActiveRecord::Base 
    has_many :posts 
end 
1

を使用しています。

このようなユーザーを取得:

users = User.where(:posts => project.post) 

をして、アレイに電子メールアドレスをマッピングするように、あなたは、ユーザーのその配列を使用して、あなたがやりたいことができます。

user_emails = users.map { |u| u.email } 
関連する問題