Ruby on rails 如何在Rails文档中发现可用的方法?

Ruby on rails 如何在Rails文档中发现可用的方法?,ruby-on-rails,Ruby On Rails,我是Rails新手,我发现它非常不透明。我有一本关于Rails的最新敏捷Web开发的书,但我担心如果没有这本书,我会完全不知所措 例如,按照书中的depot示例,当涉及到向模型添加验证时,您需要这样做 class Product < ActiveRecord::Base validates :title, :description, :image_url, :presence => true end 类产品true 结束 似乎很容易,除了没有AWDwR的书,我永远不会明白

我是Rails新手,我发现它非常不透明。我有一本关于Rails的最新敏捷Web开发的书,但我担心如果没有这本书,我会完全不知所措

例如,按照书中的depot示例,当涉及到向模型添加验证时,您需要这样做

class Product < ActiveRecord::Base

  validates :title, :description, :image_url, :presence => true

end
类产品true
结束
似乎很容易,除了没有AWDwR的书,我永远不会明白这一点。ActiveRecord::Base文档中没有提到validates方法

在我看来,有了Rails,您就应该神秘地知道在项目中的任何给定点都可以使用哪些方法。但是如果你不知道,你应该怎么知道(除了记住一本500多页的书)


我可以用另一种方式表达这个问题:在我的产品类中,我有一个名为validates的方法。如何将此方法提供给我的Products类?即使知道它是在ActiveModel::Validations::ClassMethods中定义的(我之所以知道这一点,是因为我查找了它),我也无法弄清楚它是如何提供给我的产品类的。

我每天都在使用它,我希望它也能对您有所帮助

权威网站-

已经快一年了,现在回顾过去,我可以说,我找到的学习rails的最佳资源是位于的rails指南。它们将所有内容很好地结合在一起,提供了一些示例,并为我提供了一个进入API文档的入口点(而不是像我刚开始时那样随意地四处游荡)。

Rails ActiveRecord确实支持列和方法的模型内省,只需使用以下内容

$ rails console
1.9.3> Product.columns
1.9.3> => [#<ActiveRecord::ConnectionAdapters::PostgreSQLColumn:0x007fe853d2c1f0 @name="id", @sql_type="integer", @null=false, ...

1.9.3> Product.methods
1.9.3> => [:_validators, :before_add_for_memberships?, :before_add_for_memberships=, :before_add_for_memberships, :after_add_for_memberships?, ...
$rails控制台
1.9.3>产品栏
1.9.3>=>[#产品方法
1.9.3>=>[:\u验证程序,:\u添加\u之前用于\u成员身份?,:添加\u之前用于\u成员身份=,:添加\u之前用于\u成员身份,:添加\u之后用于\u成员身份。。。

理论上,这将允许您发现可能的方法(或列)这可能会引起您的兴趣,然后您可以使用其他答案中引用的API文档源。

+1我了解您的来历。
Opaque
很好地总结了这一点。请注意,关于Rails的问题太多了,其中很多问题都源于Rails确实让您感到“置身寒冬”.文档的质量远没有达到应有的水平。所有内容都是分散的,没有内聚性。虽然我很喜欢Rails,但我想知道为什么文档没有更好。可能是因为了解Rails的每个人都想写自己的理论,卖书赚钱。希望有一个像MSDN这样的文档结构!我看了railsapi.com发现它在回答我的问题时几乎毫无用处。键入“ActiveRecord::Base”你没有得到任何结果。再说一遍,这个网站是如何帮助我发现我的产品类中有一个validates方法的。这只是一个很小的例子。我通过AWDwR不到五分之一,并且遇到过很多地方,我知道该做什么的唯一原因是因为这本书告诉了我。当我试图挖掘我被告知的原因时Works,我一事无成。这是一个公平的观点,也是我在学习RoR时肯定考虑过的。Rails是如此受惯例驱动,以至于我经常发现自己“猜测”某个方法存在,然后搜索它(并找到它)。例如,视图帮助器方法(link\u to、form\u for、image\u tag等)它们都遵循相当相似和熟悉的惯例。