railstutorial.org - 让新用户关注管理员用户

时间:2015-12-19 13:09:16

标签: ruby-on-rails ruby railstutorial.org

我跟随Michael Hartl的Ruby on Rails Tutorial制作了一个类似Twitter的应用程序,我想改变它,以便所有新用户自动跟随' Admin / s。

我已尝试按照类似问题herehere的答案进行操作,但他们在创建帐户时会出错。这是我的用户控制器的相关部分。

编辑:find_all_by_admin在Rails 4.2.0中已弃用,正如Vinay所选答案所述。

控制器/ users_controller.rb

class UsersController < ApplicationController
...

  def follow_admins
    admins = User.find_all_by_admin(true) # EDIT - Deprecated: May have worked prior to rails 4.2
    admins.each do |admin|
      self.follow!(admin)
    end
  end

错误消息是

UsersController中的NoMethodError #create

  

未定义的方法`find_all_by_admin&#39;对于#

2 个答案:

答案 0 :(得分:1)

在我看来, no column 中有 admin User model 名称我们可以看到Michael Hartl's sample_app_3rd_edition

因此,为了使follow_admins方法工作,您需要在users表中添加admin列类型boolean和default:false

  def follow_admins
    admins = User.find_all_by_admin(true) # would be worked in rails 4.0 not rails 4.2.2
    admins = User.where(admin: true) # Should be work in rails 4.2.2
    # Most of the Dynamic finder has been removed form rails 4.2.2
    admins.each do |admin|
      self.follow!(admin)
    end
  end

注意正如我在回答default to false中提到的那样,这不是强制性的,但是正如您正在关注Michael Hartl的Ruby on Rails教程那么这样做很好。

希望这个答案可以帮到你!!!

答案 1 :(得分:0)

您可能从未在find_all_by_admin模型中定义User方法。

打开User模型文件并检查方法是否存在。如果没有,请将其定义为类方法。