为什么在Rails类中同时使用require和include?

时间:2015-09-04 14:41:15

标签: ruby-on-rails require

我认为在这个this主题的帮助下,我理解了requireinclude之间的区别。

然后我偶然发现github page of the bcrypt-ruby gem.中的这段代码为什么他们使用这两种方法?所以首先要加载第一个单个模型,然后再通过include所有函数加载?

require 'bcrypt'

 class User < ActiveRecord::Base
    # users.password_hash in the database is a :string
    include BCrypt
 .....

2 个答案:

答案 0 :(得分:4)

require加载ruby文件,使您的ruby代码可以使用BCrypt模块。它不一定必须与您在其中包含模块的类位于同一个文件中。

require也可用于使该文件中定义的ruby类可用(例如,您在项目中定义的其他类)。因为它位于gem中,bcrypt位于ruby路径上,如果它是项目中的文件,则可能需要引用完整路径,或者使用require_relative

include获取bCrypt模块中的代码并将其包含在User类中,为User提供BCrypt模块中声明的方法和属性。

答案 1 :(得分:3)

require加载课程。

include实际上将其放在User类中,例如,包括模块的方法,作为User类定义的一部分。

您提到的问题非常明确地说明了差异。