0

我正在关注此代码https://stackoverflow.com/a/17886089/692622,这是我的 client.rb 模型文件和 client_controller.rb 文件

# app/models/client.rb
before_create :add_unsubscribe_hash

private

def add_unsubscribe_hash
    self.unsubscribe_hash = SecureRandom.hex
end

# app/controllers/clients_controller.rb
def unsubscribe
    client = Client.find_by_unsubscribe_hash(params[:unsubscribe_hash])
    client.update_attribute(:subscription, false)
end

但是当我尝试通过 /clients/new 添加客户端时(我在控制器文件中也有所有 7 种方法),我收到错误

undefined local variable or method `add_unsubscribe_hash'

在创建方法中保存客户端时出现错误

respond_to do |format|
  if @client.save

知道出了什么问题,因为一切看起来都很好

编辑- 我在 pastebin http://pastebin.com/jkegLsaE添加了模型代码

4

1 回答 1

2

请注意,在您的 Pastebin的第 40 行中,您打开了一个应该在第 42 行终止的foreach循环,但没有。相反,循环包含整个函数声明,因此它不能被回调调用。foreachadd_unsubscribe_hash:before_create

通过在应关闭的函数中结束循环来解决此问题(并确保删除end文件末尾的无关标签):

# app/models/contact.rb
def self.import(file)
    CSV.foreach(file.path, headers: true) do |row|
        Contact.create! row.to_hash
    end
end
于 2013-07-27T20:24:46.053 回答