簡體   English   中英

無法破譯此包含地圖運算符的 Ruby 行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM