Rails: Rails 4.1μ—μ„œλŠ” 더 이상 `public`μ΄λΌλŠ” λ²”μœ„λ₯Ό μ‚¬μš©ν•  수 μ—†μŠ΅λ‹ˆκΉŒ?

에 λ§Œλ“  2014λ…„ 05μ›” 09일  Β·  3μ½”λ©˜νŠΈ  Β·  좜처: rails/rails

Rails 4.1μ—μ„œ λ‹€μŒ λͺ¨λΈ

class Product < ActiveRecord::Base
  scope :public, where(true)
end

λ‚˜μ—κ²Œμ΄ 였λ₯˜λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€ :

ArgumentError: You tried to define a scope named "public" on the model "Product", but Active Record already defined a class method with the same name.
    from /usr/local/stow/ruby-2.1.1-gh-2014.3.18/lib/ruby/gems/2.1.0/gems/activerecord-4.1.1/lib/active_record/scoping/named.rb:143:in `scope'
    from /tmp/scope/app/models/product.rb:2:in `<class:Product>'
    from /tmp/scope/app/models/product.rb:1:in `<top (required)>'

Rails 4.0.5μ—λŠ” 였λ₯˜κ°€ μ—†μŠ΅λ‹ˆλ‹€. 이것은 4.1의 μ˜λ„λœ μ£Όμš” λ³€κ²½ μ‚¬ν•­μž…λ‹ˆκΉŒ?

Module.public이 http://ruby-doc.org/core-2.1.1/Module.html#method -i-public μ‘΄μž¬ν•œλ‹€λŠ” 것을 μ•Œμ•˜μŠ΅λ‹ˆλ‹€.

irb(main):001:0> Product.method(:public)
=> #<Method: Class(Module)#public>

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

예, 이것은 Rails 4.1의 μƒˆλ‘œμš΄ κΈ°λŠ₯μž…λ‹ˆλ‹€. "μ˜ˆμ•½λœ" 이름을 가진 μ΄λŸ¬ν•œ λ²”μœ„λŠ” 항상 λ¬Έμ œκ°€ λ§Žμ•˜κ³  λ§Žμ€ λ―Έλ¬˜ν•œ λ²„κ·Έμ˜ μ›μΈμ΄μ—ˆκΈ° λ•Œλ¬Έμ— λŒ€μ‹  큰 μ†Œλ¦¬λ‘œ μ‹€νŒ¨ν•˜κΈ°λ‘œ κ²°μ •ν–ˆμŠ΅λ‹ˆλ‹€.

이 경우 μΆ©λŒμ€ μ œμ•ˆν•œ λŒ€λ‘œ Module.public λ©”μ„œλ“œμ™€ μžˆμŠ΅λ‹ˆλ‹€. public λΌλŠ” λ²”μœ„λ₯Ό μ •μ˜ν•˜μ—¬ public λΌλŠ” 클래슀 λ©”μ„œλ“œλ₯Ό λͺ¨λΈ ν΄λž˜μŠ€μ— μΆ”κ°€ν•˜κ³  Module 컨트둀 λ©”μ„œλ“œ κ°€μ‹œμ„±μ„ μž¬μ •μ˜ν•©λ‹ˆλ‹€.

λͺ¨λ“  3 λŒ“κΈ€

예, μ˜λ„μ μž…λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ #14582 및 졜근 7e8e91cλ₯Ό μ°Έμ‘°ν•˜μ„Έμš”.

@gsamokovarov κ°μ‚¬ν•©λ‹ˆλ‹€!

예, 이것은 Rails 4.1의 μƒˆλ‘œμš΄ κΈ°λŠ₯μž…λ‹ˆλ‹€. "μ˜ˆμ•½λœ" 이름을 가진 μ΄λŸ¬ν•œ λ²”μœ„λŠ” 항상 λ¬Έμ œκ°€ λ§Žμ•˜κ³  λ§Žμ€ λ―Έλ¬˜ν•œ λ²„κ·Έμ˜ μ›μΈμ΄μ—ˆκΈ° λ•Œλ¬Έμ— λŒ€μ‹  큰 μ†Œλ¦¬λ‘œ μ‹€νŒ¨ν•˜κΈ°λ‘œ κ²°μ •ν–ˆμŠ΅λ‹ˆλ‹€.

이 경우 μΆ©λŒμ€ μ œμ•ˆν•œ λŒ€λ‘œ Module.public λ©”μ„œλ“œμ™€ μžˆμŠ΅λ‹ˆλ‹€. public λΌλŠ” λ²”μœ„λ₯Ό μ •μ˜ν•˜μ—¬ public λΌλŠ” 클래슀 λ©”μ„œλ“œλ₯Ό λͺ¨λΈ ν΄λž˜μŠ€μ— μΆ”κ°€ν•˜κ³  Module 컨트둀 λ©”μ„œλ“œ κ°€μ‹œμ„±μ„ μž¬μ •μ˜ν•©λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰