【问题标题】:App design: email a specific user based on conditions应用程序设计:根据条件向特定用户发送电子邮件
【发布时间】:2011-07-05 11:31:48
【问题描述】:

在我的应用程序中,有一种情况是我必须创建一个用户来保存消息。

例如,当访问者通过单击按钮创建内容时,就会发生这种情况。其他不点击按钮的用户可以在没有电子邮件的情况下保存消息。

我正在考虑设置一个会话变量,以便应用程序的其他部分可以适应。

类似:

session[:require_email] = true

在消息的控制器中。

def create

更新

更多细节。

  1. 访问者创建了一本书。然后他们在书中添加信息。为了保存他们的更改,他们必须留下电子邮件,因为他们是这本书的创建者并对其进行管理。我使用此电子邮件创建帐户,以便验证电子邮件。

  2. 然后这个新用户通过两种方式邀请朋友参与。答:他们填写了提供电子邮件的表格。 B:他们通过 facebook 发送带有链接的消息。我已经有了他们的电子邮件,所以他们可以留言并编辑或删除它。

  3. 收到电子邮件链接的朋友在我收到他们的电子邮件后立即创建了帐户。
    从facebook点击链接的朋友没有账户。他们可以访问这本书并留言,但不必留下他们的电子邮件。这取决于他们。如果他们留下他们的电子邮件,我创建一个用户帐户,然后他们可以编辑他们的消息或删除它等。如果他们不留下他们的电子邮件,则无法编辑或删除他们的消息。

所以这是我必须管理的第三组。我在想,如果他们点击链接,我可以设置会话变量 session[:guest] = true。

然后在控制器中我可以执行以下操作

除非 session[:guest] && params[:user][:email].blank? @user = User.new(params[:user]) 结束

这样可以吗?
这应该在模型中以某种方式完成吗?

【问题讨论】:

    标签: ruby-on-rails-3


    【解决方案1】:

    你不应该在控制器中包含任何类似的逻辑。请记住,MVC 的基本原理之一是微型控制器、胖模型。对我来说,这个验证听起来是用户模型中需要的。

    validates_presence_of :email, :if => :should_validate_email?
    
    def should_validate_email?
        # your logic that says if the email should be validated.
    end
    

    希望有帮助!

    【讨论】:

    • 谢谢 Dominic 我会遵循这个想法并在我的应用程序中使用它。
    • 我的下一个问题是如何做逻辑。我不知道我在模型中有什么访问权限。我知道我无法获取会话对象,那么我可以使用什么来知道何时不应验证电子邮件?
    • 拥有更多上下文将有助于为您提供明确的答案。对我来说,根据用户点击的内容来验证是否需要电子邮件让我认为电子邮件不是必需的,而是在这些情况下应该提供。这两种情况有什么区别?是否创建了另一个对象?
    猜你喜欢
    • 2011-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-19
    • 2022-11-17
    • 2020-04-08
    • 2013-09-21
    • 2019-12-15
    相关资源
    最近更新 更多