【发布时间】:2014-10-20 18:31:21
【问题描述】:
@custom_column = CustomColumns.configure :projects do |user, tag|
columns = ModelName.method_name(user,tag)
end
@custom_column.columns should return ["title", "description"]
CustomColumns.projects.columns should return ["title", "description"]
@custom_column1 = CustomColumns.configure :groups do |domain|
columns = ModelName.method_name(domain)
end
@custom_column1.columns should return => ["desctiption", "created_at"]
CustomColumns.groups.columns should return => ["desctiption", "created_at"]
我尝试了下面的代码来实现上述结果。但我不知道如何在块中传递不同的参数?或者我怎样才能达到上述结果?
module CustomColumns
class Rule
attr_accessor :column_for, :columns
end
class << self
attr_accessor :rule
end
def self.configure(column_for, &block)
@column_for = column_for
@columns = block.call
end
end
【问题讨论】:
-
对于初学者来说,看起来你的块需要参数,但你不是
yielding任何block.call。例如在第一个示例中,它期望user和tag被发送到块中,而在第二个示例中,它期望domain。 Here is a quick tutorial on Yielding to Blocks 但还有更多可用的。一旦你了解它是如何工作的,它可能会帮助你弄清楚这一点。 -
我要问的能不能实现?还是我错过了什么?
标签: ruby configuration arguments block metaprogramming