我见过这个问题问了很多人,寻求帮助创建一个通讯系统。
我有一个通讯邮件设置与使用roadie宝石。我需要帮助弄清楚如何设置订阅部分的通讯。我一直在从一个邮件客户端手工处理通讯,所以我有大约300个订阅者。
谁能帮我设置代码,以便所有注册用户将自动订阅通讯,我可以导入我的300个电子邮件订阅者的名单。还应该有一个取消订阅链接。对我和其他很多人来说,帮助是非常有帮助的。
newsletter_mailer.rb:
class NewsletterMailer < ActionMailer::Base
default from: "from@example.com"
def weekly(email)
@newsletter = newsletter
@recipient = recipient
mail to: email, subject: "New Dates Weekly"
end通讯财务主任:
def send
@newsletter = Newsletter.find(:params['id'])
@recipients = Recipient.all
@recipients.each do |recipient|
Newsletter.newsletter_email(recipient, @newsletter).deliver
end
end用户控制器:
def settings
@user = User.find(params[:id])
end
def new
@user = User.new
end
def profile
@profile = User.profile
@user = User.find(params[:id])
end
def create
@user = User.new(user_params)
if @user.save
UserMailer.registration_confirmation(@user).deliver
session[:user_id] = @user.id
redirect_to root_url, notice: "Thank you for signing up!"
else
render "new"
end
end
def show
@user = User.find(params[:id])
end
def edit
@user = User.find(params[:id])
end发布于 2014-05-08 14:57:59
听起来你需要User和Recipient之间一对一的关系。
class User < ActiveRecord::Base
has_one :recipient
...
end
class Recipient < ActiveRecord::Base
belongs_to :user
...
end然后,在注册过程中,只需创建用户的收件人:
def create
@user = User.new(user_params)
if @user.save
...
@user.create_recipient(:email => @user.email)
...
else
render "new"
end
end有关has_one方法(如create_association )的更多详细信息,请参见create_association。
发布于 2014-04-30 16:13:40
这是经典的many-to-many关系。
在Rails中,它是由has_and_belongs_to_many实现的,通常被称为habtm。
了解关系的一个好的开端是RubyOnRail
基本上,您需要一个Newsletter模型、一个Subscriber模型和一个表newsletters_subscribers。
class Newsletter < ActiveRecord::Base
has_and_belongs_to_many :subscribers
end
class Subscriber < ActiveRecord::Base
has_and_belongs_to_many :newsletters
endhttps://stackoverflow.com/questions/23392863
复制相似问题