【问题标题】:Devise invitable batch invite - Ruby on rails设计邀请批量邀请 - Ruby on rails
【发布时间】:2012-01-03 07:33:14
【问题描述】:

我正在尝试使用 Devise invitable 一次添加多个用户。基本上,当有人创建帐户时,他们要做的第一件事就是使用邀请表单添加一堆用户......

只是不确定如何复制表单中的字段并让他们为每个条目发送创建请求。

提前致谢!

【问题讨论】:

  • 我猜你正在使用 devise_invitable gem。用户是否仅通过邮箱地址邀请了一批用户?
  • 是的,你都有权利。使用 Devise_invitable,您只需输入电子邮件地址,用户就会收到一封电子邮件,并使用发送给他们的接受链接设置他们的密码。

标签: ruby-on-rails devise


【解决方案1】:

这就是我的做法。

提供一个接受逗号分隔的电子邮件列表的文本区域。定义 向此列表中的每封电子邮件发送邀请的新操作。

让我们为这个例子假设一个用户模型和一个用户控制器。

为 batch_invite 操作定义路由。

resources :users do
  collection do
    post 'batch_invite'
  end
end

在 users_controller 中定义 batch_invite 操作

def batch_invite
  #Validate the user_emails field isn't blank and emails are valid
  params[:user_emails].split(",").each do |email|
    User.invite!(:email => email)
  end
  #redirect_to appropriate path
end

在文本区域中接受以逗号分隔的电子邮件列表的表单。

<%= form_tag batch_invite_users_path, :method => :post do %>
  <%= label_tag "Email ids of people you'd like to invite." %>
  <%= text_area_tag :user_emails %>
  <%= submit_tag "Invite!" %>
<% end %>

几个注意事项:

  1. 如果你喜欢你的控制器瘦,你可以将逻辑移动到模型中,例如,通过在你的用户模型中创建一个 send_batch_invitations 方法并将 params[:user_emails] 作为参数从用户控制器。

  2. 由于发送邀请的方法可能需要足够的时间才能完成,我建议您将此任务分配给后台作业处理器,例如 delayed_jobresque。 有railscasts 演示了这两个后台作业处理器的用法。

【讨论】:

    猜你喜欢
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-18
    • 2011-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多