我问了一个类似的问题并得到了很大的帮助,它澄清了一些理解和概念。这是第一次使用actionmailer,所以我试图更好地理解
我想要实现的是将电子邮件发送给单击提醒我按钮的用户。这是一个简单的图书馆应用程序,用户可以在其中签出,签入并在重新签入书籍时请求提醒。我只是在逻辑的最后一部分上苦苦挣扎,一旦我看到它工作我相信我会理解更好
因此,当一本书的 check_out 状态发生变化时,书籍模型会出现各种帖子
Check out
<%= form_for @book do |f| %>
<%= f.label :checked_out, "Check Book Out?" %>
<%= f.check_box :checked_out, {}, true %>
<%= f.hidden_field :user_id, :value => current_user.id %>
<%= f.hidden_field :checked_out, :value => true %>
<%= f.submit 'Checkout' %>
<% end %>
Check In
<%= form_for @book do |f| %>
<%= f.label :checked_out, "Check Book Back In" %>
<%= f.check_box :checked_out, {checked: false}, false %>
<%= f.hidden_field :user_id, :value => nil %>
<%= f.hidden_field :checked_out, :value => false %>
<%= f.submit 'Check In' %>
<% end %>
Register Interest
<%= form_for @book do |f| %>
<%= f.label :remind_me, "let Me know when book back in" %>
<%= f.check_box :remind_me, {checked: false}, false %>
<%= f.hidden_field :remind_me, :value => current_user.id %>
<%= f.submit 'Remind Me' %>
<% end %>
在我的图书模型中,我有这个逻辑来识别当一本书在发出提醒我请求后重新签入时,会发送一封电子邮件通知用户该书已回到图书馆
after_save :reminder_mailer
def reminder_mailer
if !self.checked_out && self.changes[:user_id] && self.user.nil?
ReminderMailer.remind_email(@user).deliver
end
和我的行动邮件
class ReminderMailer < ActionMailer::Base
default from: "my email address"
def remind_email(user)
@user = user
mail(:to => user.email, :subject => "Library Clerk")
end
end
正如您可能看到的那样,我正在为发送提醒我请求的用户电子邮件而苦苦挣扎。当发出提醒我请求时,我将 users_id 发布到列提醒我。我有一个单独的用户模型(设计)..
我的问题的一部分是当 users_id 发布到提醒我列时它只是一个常规整数而不链接到 users_id?
任何建议表示赞赏