我曾問一個類似的問題,並得到了一些很大的幫助,它已經澄清了一些理解和concepts.This是使用的ActionMailer所以我想更好地瞭解獲取的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發佈到alerts_me列。我有一個單獨的用戶模型(設計)..
是我的問題的一部分是,當users_id張貼到提醒我列它只是一個普通的整數,並沒有鏈接到users_id?
任何意見讚賞
我在想有一個單獨的模型,那是什麼病。只是爲了我自己的確認,位於reminder_me列的id永遠不會訪問user_id嗎? – Richlewis
您不再需要'Book'模型中的'remin_me'列,就像您說的那樣,您將在每個提醒中創建一個「提醒」條目。 您只需發送本書的ID,然後在控制器操作中使用'current_user'。 – Khaled
你也介意解釋Reminder.create(user:current_user,book:@book),我會有一個提醒控制器?它會在創建行動?道歉不能確定你的意思 – Richlewis