[英]Unable to decipher this Ruby line containing map operator
我剛剛在ruby-trello 中看到了這行 Ruby 代碼:
# Returns the member who created the action.
one :member_creator, :via => Member, :using => :member_creator_id
它似乎與定義為的超類方法有關:
def self.one(name, opts = {})
class_eval do
define_method(:"#{name}") do |*args|
options = opts.dup
klass = options.delete(:via) || Trello.const_get(name.to_s.camelize)
ident = options.delete(:using) || :id
klass.find(self.send(ident))
end
end
end
我知道class_eval與反射有關。
有人可以解釋子類代碼行的目的嗎?
我的猜測是它調用類成員one
傳遞:member_creator
作為名稱,兩個尾隨參數作為opts
參數。 但是為什么要在類級別調用它呢?
這似乎是一種干燥一些用於通過主鍵查找單個記錄的代碼的方法。
您基本上傳遞了一個類/模型名稱和一個用於獲取主鍵的方法。
這段代碼:
one :member_creator, :via => Member, :using => :member_creator_id
創建此方法:
def member_creator
Member.find(self.member_creator_id)
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.