我想在一个控制器(home)上跳过Pundit 的policy_scope要求.我试过这个:
class ApplicationController < ActionController::Base
include Pundit
after_action :verify_authorized, :except => :index, unless: :devise_controller?
after_action :verify_policy_scoped, :only => :index, unless: controller.controller_name == "home"
end
class HomeController < ApplicationController
def index
redirect_to (new_user_session_path) unless user_signed_in?
if user_signed_in?
@user=current_user
end
end
end
Run Code Online (Sandbox Code Playgroud)
但我认为控制器尚未定义或其他什么?有什么想法或建议吗?
我需要在Ruby中解决一个简单的问题,但希望以一种聪明的方式来解决它.我有一个功能:
def fullname
first + " " + mi + last
end
Run Code Online (Sandbox Code Playgroud)
如果一个或多个变量是nil,那就会崩溃,让我们说这个例子的mi,因为它在中心.
错误:
无法将nil转换为String
如果我将功能更改为:
def fullname
first + " " + mi.to_s + last
end
Run Code Online (Sandbox Code Playgroud)
要么
def fullname
first + " " + (mi || "") + last
end
Run Code Online (Sandbox Code Playgroud)
它会解决它.现在我想在mi(中间首字母)之后添加一个额外的空格,如果它存在的话我会因为一些愚蠢的原因而难倒.做这样的事最干净的方法是什么,因为我将不得不做很多事情,有时还会加上逗号.
需要的例子:
def fullname
first + " " + (mi || "") + last + suffix
# want a ", " afer the last name if there is a suffix
end
Run Code Online (Sandbox Code Playgroud) 我有一个多态关系,地址既可以由成员拥有,也可以由依赖者拥有.一切都看起来很棒,直到我意识到我不知道什么类型的物体正在创造它,除非我遗漏了什么.有没有办法告诉路由文件包含对象的类型?
楷模:
class Member < ActiveRecord::Base
has_one :address, as: :person, dependent: :destroy
end
class Dependent < ActiveRecord::Base
has_one :address, as: :person, dependent: :destroy
end
class Address < ActiveRecord::Base
belongs_to :person, polymorphic: true
end
Run Code Online (Sandbox Code Playgroud)
控制器:
def new
@person = ???
@address = Address.new(person: @person)
end
Run Code Online (Sandbox Code Playgroud)
目前路线:
resources :members do
resources :addresses, shallow: true
resources :dependents, shallow: true do
resources :addresses, shallow: true
end
end
Run Code Online (Sandbox Code Playgroud)
我有路由要在每个下面解决,但我需要检查params [:member_id]或params [:dependent_id].当我将笔记附加到一切时会发生什么.我可能在Rails中错过了一些简单的方法,任何建议都将非常感谢!
routes ruby-on-rails polymorphic-associations ruby-on-rails-4