Size: a a a

pro.rb (Ruby/Rails / RU)

2019 September 30

RU

Roman Usherenko in pro.rb (Ruby/Rails / RU)
MyTest.new.x
источник

RU

Roman Usherenko in pro.rb (Ruby/Rails / RU)
почитай основы языка
источник

А

Александр in pro.rb (Ruby/Rails / RU)
Нет, а как в рельсах это работает? Я сейчас поискал по исходникам, не нашёл там «def self.where», но как-то же это работает.
источник

А

Александр in pro.rb (Ruby/Rails / RU)
Я же делаю User.where, а не User.new.where.
источник

Т

Тенпеннай in pro.rb (Ruby/Rails / RU)
Александр
Нет, а как в рельсах это работает? Я сейчас поискал по исходникам, не нашёл там «def self.where», но как-то же это работает.
оно необязательно должно выглядеть именно так
источник

Т

Тенпеннай in pro.rb (Ruby/Rails / RU)
a = 'foo'
class << a
 def inspect
   '"bar"'
 end
end
источник

Т

Тенпеннай in pro.rb (Ruby/Rails / RU)
например, вот так делают
источник

RU

Roman Usherenko in pro.rb (Ruby/Rails / RU)
Александр
Нет, а как в рельсах это работает? Я сейчас поискал по исходникам, не нашёл там «def self.where», но как-то же это работает.
почитай документацию к языку. я серьезно
источник

RU

Roman Usherenko in pro.rb (Ruby/Rails / RU)
в рельсах это вообще метапрограммированием может быть сделано
источник

А

Александр in pro.rb (Ruby/Rails / RU)
Roman Usherenko
почитай документацию к языку. я серьезно
Смотри: MyTest.x из примера выше — некорректно, а User.where в рельсах — это работает. Как?
источник

RU

Roman Usherenko in pro.rb (Ruby/Rails / RU)
define_method :where do
end
источник

RU

Roman Usherenko in pro.rb (Ruby/Rails / RU)
Александр
Смотри: MyTest.x из примера выше — некорректно, а User.where в рельсах — это работает. Как?
where - метод класса
источник

А

Александр in pro.rb (Ruby/Rails / RU)
Roman Usherenko
where - метод класса
Понятно, что по логике вещей это должен быть метод класса, просто я не нашёл в исходниках def self.where, при том, что def where там встречается. Вот и интересно, может там какая-то хитрость есть.
источник

Т

Тенпеннай in pro.rb (Ruby/Rails / RU)
Roman Usherenko
define_method :where do
end
это ж метод инстанса даст
источник

Т

Тенпеннай in pro.rb (Ruby/Rails / RU)
Александр
Понятно, что по логике вещей это должен быть метод класса, просто я не нашёл в исходниках def self.where, при том, что def where там встречается. Вот и интересно, может там какая-то хитрость есть.
есессна есть
источник

Т

Тенпеннай in pro.rb (Ruby/Rails / RU)
метапрограммирование
источник

u

unkmas in pro.rb (Ruby/Rails / RU)
Тенпеннай
это ж метод инстанса даст
Это он метапрограммирование показал
источник

u

unkmas in pro.rb (Ruby/Rails / RU)
Александр
Понятно, что по логике вещей это должен быть метод класса, просто я не нашёл в исходниках def self.where, при том, что def where там встречается. Вот и интересно, может там какая-то хитрость есть.
Начать стоит с того, что класс - это тоже объект в руби
источник

RU

Roman Usherenko in pro.rb (Ruby/Rails / RU)
Тенпеннай
это ж метод инстанса даст
если завернуть в class << self то не даст :)
источник

RU

Roman Usherenko in pro.rb (Ruby/Rails / RU)
Александр
Понятно, что по логике вещей это должен быть метод класса, просто я не нашёл в исходниках def self.where, при том, что def where там встречается. Вот и интересно, может там какая-то хитрость есть.
def where может быть в модуле, которому потом делается extend
источник