【问题标题】:Custom Validation not working Rails model自定义验证不起作用 Rails 模型
【发布时间】:2012-03-13 19:22:57
【问题描述】:

我正在尝试验证用户的 Twitter 用户名并编写了自定义验证。然而,即使它似乎在 irb 会话中工作,它也不起作用。这是我的代码

    def twitter_user                    
        begin 
            @t = Twitter.user :twitter
        rescue Twitter::Error::NotFound => e
            @t = nil
        end 

        errors.add(:twitter, (" username does not exist")) if @t.nil?

    end

我也试过这个:

def twitter_user

            errors.add(:twitter, (" username does not exist")) unless begin Twitter.user :twitter
            rescue Twitter::Error::NotFound => e

            end 

        end

即使 Twitter 用户名有效,也会出现此错误。谁能解释为什么?感谢您的帮助。

编辑:我已将其缩小到传递的参数:twitter,不是用户的输入。如何获取用户传递的值?

【问题讨论】:

  • begin; Twitter.user :twitter; rescue Twitter::Error::NotFound; errors.add(:twitter, "username does not exist"); end
  • 这最终会出现同样的问题。我想知道我是否忽略了什么。只是看到它在 irb 会话中起作用,我很困惑。
  • 尝试 errors.add_to_base("username does not exist").. 这将向对象添加错误.. 对于特定字段 errors.add(:twitter, "username does not exist" )。我希望这段代码在模型中
  • 谢谢,但这也行不通。
  • 在我看来,您正在寻找一个名为“twitter”的 Twitter 帐户。这真的是你想要的吗?

标签: ruby-on-rails validation model twitter


【解决方案1】:

你必须在你的模型中添加验证方法

例如:

validate :user_is_exist


def user_is_exist
  errors.add(:twitter, (" username does not exist")) if @t.nil?
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多