我怎么能找到有关RoR的信息?

时间:2015-11-10 18:33:44

标签: ruby-on-rails ruby

我最近被要求参加一个网络服务项目。他们使用Ruby on Rails,我发现它很难学习。

问题是Ruby是一种动态编程语言,隐藏了类型信息。我知道这是一种编程方式。但是,我不明白这种类型隐藏扩展到文档的原因。

我无法在the rails api documentation中找到有关方法返回类型或参数类型的任何信息。

一个例子。在进行迁移时,我们使用create_table方法。

create_table :post do |t|
  t.integer :user_id
  t.string :title
  t.string :text
  t.string :image
  t.integer :category_id
  t.date :date_available

  t.timestamps
end

t。我不想让你告诉我t是什么。我想知道在哪里可以找到它是什么。我想知道它有哪些方法,stringintegerdate来自哪里。

现在我必须花时间逆向工程rails代码并在Internet上找到含糊不清的教程。是否有一个地方可以找到所有rails类的返回类型和参数类型。和常数。还有一切。

2 个答案:

答案 0 :(得分:1)

create_table只是一种方法。您可以在任何位置找到有关Rails自动生成的方法级文档的文档。如:

http://apidock.com/rails/ActiveRecord/ConnectionAdapters/SchemaStatements/create_table

|t|是一个块参数,在您传递给create_table方法的块中,create_table方法将使用一个参数调用。如果您不了解块如何在ruby中工作,那么如果您阅读它,您肯定会有更轻松的时间。它并不特定于Rails,它是ruby语言的一部分。

那么create_method将什么类型的对象传递给块参数?您可以在create_method文档中找到您记录的位置,但实际上它似乎并没有告诉您。其他采用块的方法可能更有可能被记录下来,以准确地告诉你它们将通过什么(如果它不明显),但它有点烦人,这里没有记录。

使用这个特定的方法,它是一种实现细节,|t|是什么类 - 重要的是你可以用它做什么。这实际上是一般的“鸭子打字”的红宝石哲学的关键,重要的是你可以用一个对象做什么,而不是它是什么类。但我同意知道它是什么类 - 即使它基本上是一个你永远不会实例化的内部类,就像在这种情况下一样 - 使得查找文档更容易解释你可以用它做什么。如果我正在编写create_method的文档,我会记录下来。但我不是。

我很抱歉,我们只能回答您的问题,而不是更改Rails文档或性质或ruby语言或ruby社区的常见做法更像您或我可能更喜欢。

在这种情况下,人们会根据上面针对|t|Rails migration guide的文档中的create_method了解您可以执行的操作。 Rails指南非常适合全面了解Rails各种组件的工作原理。但他们确实假设已经将ruby视为一种语言的读者,并且熟悉网络和编程。

尽管如此,我们很幸运,Rails迁移指南确实告诉我们该对象是什么......

  

有关各个方法的更多详细信息和示例,请查看API文档。特别是ActiveRecord :: ConnectionAdapters :: SchemaStatements(提供更改,上下方法中可用的方法),ActiveRecord :: ConnectionAdapters :: TableDefinition(提供create_table生成的对象上可用的方法)和ActiveRecord的文档:: ConnectionAdapters :: Table(提供change_table产生的对象上可用的方法)。

这就是|t|是什么,一个ActiveRecord :: ConnectionAdapters :: TableDefinition。 (也许你想向Rails提交一个拉取请求,将这些信息添加到create_table等自己的方法级文档中)

ActiveRecord::ConnectionAdapters::TableDefinition在这里有一小部分自动生成的文档:http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/TableDefinition.html。另外,我猜每个单独的数据库类型(mysql vs postgres等)都有ActiveRecord::ConnectionAdapters::TableDefinition的不同具体实现

但实际上并没有那么多。正如我所说,在实践中,大多数开发人员并不需要了解更多信息,而不是像其他地方所记录的那样。但我确实理解你想知道它到底是什么以及它做了什么。潜入源代码是大多数Rails开发人员此时会做的事情(或者之前已经完成确定对象是什么类,可能使用调试器)。 大多数自动生成的ruby文档,就像我们一直在查看的文档一样,在每个方法上都包含一个链接,用于查看该方法的源代码,与文档内联。我经常使用它,有时候来源很容易回答我用英语书面文档没有的任何问题(有时它没有)。

我知道你不喜欢那种情况,对不起,我无法在SO回答中为你改变现实!

答案 1 :(得分:0)

查看Rails的API停靠栏。你可以找到api的源代码和定义。

对于" create_table"的具体情况;方法。看看http://apidock.com/rails/ActiveRecord/ConnectionAdapters/SchemaStatements/create_table。它解释说这个方法需要一个块,返回SQL。