我有这段代码。我想创建一个宏
create_table(:some_table) do
primary_key :id
# should be generated by macro
DateTime :inserted_at
DateTime :updated_at
end
如何创建这样一个生成这两行代码的宏,以便我可以这样做:
create_table(:some_table) do
primary_key :id
# should be generated by macro
my_macro_that_generates_timestamps()
end
答案 0 :(得分:4)
如果您知道这是什么类,您可以使用任何方法进行修补。如果你不知道它是什么类,你总能找到使用破坏事物的穴居人方法:
progress2
现在你得到一个例外,并希望有一些见解。一旦你知道,你可以添加方法:
create_table(:some_table) do
raise self.class.to_s
end
如果您已正确匹配上下文,则该代码应使用该名称。
这里不需要宏,只需要一个简单的方法调用。
class MigrationClass
def timestamps_as_usual
DateTime :inserted_at
DateTime :updated_at
end
end