ruby-on-rails - 在类主体中声明的 Ruby 方法调用

标签 ruby-on-rails ruby

我刚开始学习ruby on rails,遇到过如下代码:

class Post < ActiveRecord::Base
 validates_presence_of   :title
 belongs_to :user
end

类体内有两个方法调用。 我很难找到任何 ruby​​ 文档 描述了从类的主体内部(但在任何方法之外)进行的方法调用是如何工作的。 我所有的书,只描述了如何定义类和实例方法以及如何 从其他方法中调用它们。

我的问题是: 如何以及何时调用这些方法? 它们是如何定义的?它们是在某个事件记录模块中定义的 mixin 吗?

最佳答案

类定义的主体是代码的执行上下文,就像其他代码一样。那里的代码在类的上下文中执行(意思是 self 是类对象,它是 Class 的一个实例)。您可以拥有局部变量和实例变量(它们将属于类对象本身而不是类的实例)并且您可以调用类对象响应的任何方法。一旦类定义 block 完成,代码就会运行。

在这种情况下,ActiveRecord::Base 定义了类方法 validates_presence_ofbelongs_to

关于ruby-on-rails - 在类主体中声明的 Ruby 方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1344797/

相关文章:

ruby-on-rails - 在 Ruby 中比较数组时填充缺失的条目

ruby-on-rails - Rails 循环通过 'A..Z' 及以后?

ruby-on-rails - 如何将我现有的 Rails 应用程序移动到 heroku? (sqlite 到 postgres)

ruby - 如何从代理后面更新 Ruby Gems (ISA-NTLM)

php - Ruby 类实例变量与 php 属性

ruby-on-rails - Michael Hartl 的 Ruby on Rails 教程第 8 章中没有路由错误

ruby-on-rails - 如何在 Rails 日志中禁用 Redis 日志?

ruby - RVM 没有安装/usr/local/rvm/bin/ruby 或/usr/local/rvm/bin/gem?

ruby - 迭代在 Ruby 中是如何工作的?

ruby - 如何使用 Mechanize 和 nokogiri ruby​​ 获取链接