我希望能夠將我的用戶對象傳遞給另一個類進行驗證。基本上我做這樣的事情Rails在傳遞到類後激活記錄爲空
我的控制器:
def new
user = User.find(1)
logger.info "#{user.id}, #{user.name}, #{user.isadmin}"
#The above is logged with 1, test, true
uhelper = UserHelper.new(user)
if !uhelper.isAdmin
#Only admins can access this page
redirect_to root_path
end
end
在app
/型號
Class UserHelper
def initialize(user)
@user = user
end
def isAdmin
if @user.isadmin
true
end
nil
end
將在控制器語句總是解決爲零,即使我知道的記錄是正確的。我可以不正確地將ActiveRecords傳遞給類嗎?
有沒有人有任何想法,爲什麼這可能會發生?
編輯
undefined method `isadmin' for nil:NilClass
app/models/userfnc.rb:14:in `isAdmin'
app/controllers/rosters_controller.rb:12:in `index'
sqlite> select * from users;
1|testuser|[email protected]|20170601|20170601|1
sqlite> .schema users
CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar DEFAULT NULL, "email" varchar DEFAULT NULL, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL, "isadmin" boolean);
'isAdmin'將因爲您告訴它而始終返回'nil'。如果'nil'應該是else響應,那麼重構你的'isAdmin'方法來使用'if ... else ... end'。對於'ActiveRecord'布爾值,標準約定是調用「布爾方法」,而不是'@ user.isadmin',它將是'@ user.isadmin?'(末尾帶有問號)。終於是什麼'userfnc'?應該可能是「app/models/user.rb」或「app/helpers/user_helper.rb」 – engineersmnky