如何在RoR中编写自定义方法?

时间:2012-11-28 04:55:13

标签: ruby-on-rails

如何在RoR中编写此方法?

if item is nil or item.user!='my_value' redirect_to "/"

想要这样称呼它:

@item = Item.find(params[:id])
method_described_earlier(@item)

或其他方式。 想看看rails pro如何做到这一点。

1 个答案:

答案 0 :(得分:0)

您应该使用before_filter,它将在您指定的任何一组控制器操作之前运行。例如:

class SomeController < ApplicationController
  before_filter :require_special_item, only: [:myaction, :other_action, ...]

  def myaction
    # do something with @item
  end

  private

    def require_special_item
      @item = Item.find(params[:id])
      if @item is nil or @item.user!='my_value'
        redirect_to "/"
      end
    end
end

方法require_special_item将始终在myaction之前运行以及您指定的任何其他操作,如果找到的项目不符合您的要求,则会重定向用户。