у меня есть контроллер
class DatasourcesController < ApplicationController
В этом контроллере у меня есть:
def show
....
@datasource = DataSource.find(datasource_id)
...
end
В datasource_helper.rb
У меня есть:
def datasource_type
puts "\r\n\r\n::::::::::::\r\n ONCE AGAIN @datasource = #{@datasource.inspect}\r\n::::::::::::\r\n\r\n"
# @datasource[:dsd_type_id] = "GOV"
@datasource.partnertype.par_description
end
Где
puts "\r\n\r\n::::::::::::\r\n ONCE AGAIN @datasource = #{@datasource.inspect}\r\n::::::::::::\r\n\r\n"
печатает что-то вроде:
::::::::::::
ONCE AGAIN @datasource = #<DataSource ...., dsd_type_id: "XRPT", ...>
::::::::::::
И когда выполняется @datasource.partnertype.par_description
, он выдает запрос такого типа:
SELECT `partnertype`.* FROM `partnertype` WHERE `partnertype`.`par_code` = 'XRPT' LIMIT 1
Можете ли вы объяснить мне, как происходит это волшебство?
Откуда взялись @datasource
методы? Когда я проверяю это, я вижу, что это Хэш.
Другими словами, какие правила / соглашения применяются к этому?
Значит ли это, что переменная экземпляра @datasource
по умолчанию унаследовала все методы из соответствующей модели?
Извините, но я новичок в рельсах, все эти неявные правила / соглашения доставляют мне много хлопот.