小编Mec*_*Dog的帖子

在一个控制器上略过权威范围

我想在一个控制器(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-on-rails-4 pundit

4
推荐指数
2
解决办法
1617
查看次数

Ruby连接最佳实践

我需要在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)

ruby

3
推荐指数
2
解决办法
826
查看次数

多态控制器和调用对象

我有一个多态关系,地址既可以由成员拥有,也可以由依赖者拥有.一切都看起来很棒,直到我意识到我不知道什么类型的物体正在创造它,除非我遗漏了什么.有没有办法告诉路由文件包含对象的类型?

楷模:

 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

3
推荐指数
1
解决办法
2355
查看次数