ruby-on-rails - 如果在 Controller 外部声明了方法,为什么这个 Rails 代码可以工作?

标签 ruby-on-rails ruby ruby-on-rails-4

如果 private 语句写在类外部,并且方法 login_paramspermissed_pa​​rams 也在类外部声明,为什么此代码可以工作?

class RegistrationsController < Devise::RegistrationsController
   respond_to :json
   skip_before_filter :user_is_signed_in, only: :create

   def create
     ...
   end

end

private

def login_params
   permitted_params.extract!(:email, :password).permit!
end

def permitted_params
   params.require(:user).permit(:email, :password, :password_confirmation, :username,     :first_name, :last_name)
end

最佳答案

“当一个方法在 Ruby 中被声明为私有(private)时,这意味着该方法永远不能通过显式接收者来调用。”

由于不需要显式接收者来调用 Controller 类本身内的这些方法,因此它仍然有效。

http://www.skorks.com/2010/04/ruby-access-control-are-private-and-protected-methods-only-a-guideline/

关于ruby-on-rails - 如果在 Controller 外部声明了方法,为什么这个 Rails 代码可以工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27174859/

相关文章:

ruby-on-rails - MongoDB 和 Mongoid - 动态字段

Ruby 哈希数组,比较 2 个键并求和另一个键/值

ruby-on-rails - capybara :有时能找到元素,有时找不到

html - 根据 rails 4 中的页面显示不同的样式表

ruby-on-rails - Rails 中的复杂 postgres 查询

ruby-on-rails - ActiveSupport 中 mattr_accessor 和 cattr_accessor 的区别?

ruby-on-rails - 使用 remote=true 执行 ajax 时,Rails 不保留 session 数据

ruby-on-rails - 如何设置 RSpec 进行性能测试 'on the side'

ruby-on-rails - 无法让 rack-cors 在 rails 应用程序中工作

ruby-on-rails-4 - 何时/何地使用 twitter gem 初始化客户端