ruby-on-rails - Rails 如果存在则更新,否则使用 find_or_create_by 创建

标签 ruby-on-rails ruby-on-rails-3 postgresql

我正在尝试运行一种方法,如果存在(表 Hashtag 列标签)标记,它会将 View 计数更新为 1。否则它将创建一个新行,默认 View 计数为 0 并且标记为 @hashtag scrubbed .

Hashlog.rb

def self.create_hashlog(hashtag)        #enters hashtag into the log table, without #. 
        @hashtag_scrubbed = hashtag
        # Hashlog.find_or_create_by_tag(@hashtag_scrubbed) 

        taglog = Hashlog.find_or_create_by_tag(@hashtag_scrubbed) do |t|
        t.count = 0
        end
        taglog.count += 1
        taglog.save!    
    end

错误

Completed 500 Internal Server Error in 772ms

NoMethodError (undefined method `+' for nil:NilClass):
  app/models/hashlog.rb:24:in `create_hashlog'
  app/controllers/hashtags_controller.rb:32:in `create'

最佳答案

如果您的查找失败(因为没有记录)并且您的创建失败(因为验证失败),该函数返回 nil。

关于ruby-on-rails - Rails 如果存在则更新,否则使用 find_or_create_by 创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13870750/

相关文章:

ruby-on-rails - 在另一个选项卡中设计登录/注销后 InvalidAuthenticityToken

ruby-on-rails - 仅在生产中,Sidekiq 启动延迟作业但不发送电子邮件

ruby-on-rails - ActiveRecord::Relation 代码显示而不是预期数据

ruby-on-rails - 改变 Rails 环境。到生产

ruby-on-rails - 为什么:dependent => :restrict throw an error?

ruby - 在 rails3 中使用回形针 gem

sql - 从表中的几个系列中的每一个中获取最后一行

ruby-on-rails - 获取 Rails 3 关联的 SQL

python - 我需要如何将 sql 插入、通用值、哪些列和值可变化?

PHP 数据库 - 作为链接或 "reference"传递给函数?