我跟随Michael Hartl的Ruby on Rails Tutorial制作了一个类似Twitter的应用程序,我想改变它,以便所有新用户自动跟随' Admin / s。
我已尝试按照类似问题here和here的答案进行操作,但他们在创建帐户时会出错。这是我的用户控制器的相关部分。
编辑: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;对于#
答案 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
模型文件并检查方法是否存在。如果没有,请将其定义为类方法。