私のユーザオブジェクトを別のクラスに渡して検証することができるようにしたい。アプリ/モデル Railsアクティブなレコードのヌルがクラスに渡された後
Class UserHelper
def initialize(user)
@user = user
end
def isAdmin
if @user.isadmin
true
end
nil
end
ザ・コントローラ内の文は、常に私はレコードが正しいことを知っているにもかかわらず、nilに解決されている場合で
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
:基本的に私は私のコントローラ
ような何かを行います。 ActiveRecordをそのようなクラスに正しく渡すことはできませんか?
これはなぜ起こっているのでしょうか?
編集
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レスポンスでなければ' is ... else ... end'を使うように 'isAdmin'メソッドを再構築します。また、 'ActiveRecord'ブール値の場合、標準的な規則は"ブーリアンメソッド "を' @ user.isadmin'ではなく '@ user.isadmin?'(最後に疑問符を付けて)と呼ぶことです。最後に 'userfnc'とは何ですか? "app/models/user.rb"または "app/helpers/user_helper.rb"のいずれかである必要があります – engineersmnky