在情節389 of Railscasts,他創建了一個名爲SCOPE_SCHEMA方法,既被整個事件中使用的方法,但與do
紅寶石方法塊
塊可以在任何方法來完成這樣也傳遞? (*paths)
代表什麼?我該如何創建一個可以成爲塊的方法?我看了看link_to
源代碼,並在可能安排發送給最終&block
注意到你可以做
<%= link_to ....%>
或
<%= link_to ... do %>
<%end%>
還是我不正確的?
集代碼:
after_create :create_schema
def create_schema
connection.execute("create schema tenant#{id}")
scope_schema do
load Rails.root.join("db/schema.rb")
connection.execute("drop table #{self.class.table_name}")
end
end
def scope_schema(*paths)
original_search_path = connection.schema_search_path
connection.schema_search_path = ["tenant#{id}", *paths].join(",")
yield
ensure
connection.schema_search_path = original_search_path
end
那麼爲什麼在'scope_schema'的情況下沒有'&block'還沒有和'do'一起使用或者是由於splat操作符? –
'scope_schema'方法中的'yield'產生了一個塊 - 我很抱歉,我不明白這是問題的一部分。 [這個答案](http://stackoverflow.com/a/3066939/2128691)很好地涵蓋了「yield」。 – dax