Ruby on rails 属性类名称如何影响我的模型?

Ruby on rails 属性类名称如何影响我的模型?,ruby-on-rails,Ruby On Rails,在我的web开发课程中,我们获得了以下代码: class User < ActiveRecord::Base has_many :shouts has_many :followed_user_relationships, class_name: "FollowingRelationship" has_many :followed_users, through: :followed_user_relationships def follow(other_user)

在我的web开发课程中,我们获得了以下代码:

class User < ActiveRecord::Base
  has_many :shouts
  has_many :followed_user_relationships, class_name: "FollowingRelationship"
  has_many :followed_users, through: :followed_user_relationships

  def follow(other_user)
    followed_users << other_user
  end
end
class用户Rails需要知道为关联实例化哪个类。它通过基于关联名称进行猜测来实现这一点,但它只能在类和关联的命名是可预测的情况下实现这一点。具体来说,它使用
String#classify
将关联名转换为类名<代码>分类
将下划线大小写转换为驼峰大小写,并将单词单数化:

"some_kind_of_records".classify => "SomeKindOfRecord"
在您的特定情况下,您的关联名和类名不是以这种方式关联的。
:followered\u user\u relationship
将导致Rails查找名为
followeredUserrelationship
的类,该类不是正确的类,
followerrelationship

因为您稍微偏离了这个约定,所以必须显式地告诉Rails所涉及的类的名称。这就是
class\u name
所做的一切。当Rails无法正确猜测时,它会告诉Rails要使用的类的名称

考虑一个更简单的例子:

class User < ActiveRecord::Base

end

class Post < ActiveRecord::Base
  belongs_to :author, class_name: 'User'
end
class用户

如果我们写的都是
属于:author
,Rails怎么知道
Post
用户关联?

Rails需要知道为关联实例化哪个类。它通过基于关联名称进行猜测来实现这一点,但它只能在类和关联的命名是可预测的情况下实现这一点。具体来说,它使用
String#classify
将关联名转换为类名<代码>分类
将下划线大小写转换为驼峰大小写,并将单词单数化:

"some_kind_of_records".classify => "SomeKindOfRecord"
在您的特定情况下,您的关联名和类名不是以这种方式关联的。
:followered\u user\u relationship
将导致Rails查找名为
followeredUserrelationship
的类,该类不是正确的类,
followerrelationship

因为您稍微偏离了这个约定,所以必须显式地告诉Rails所涉及的类的名称。这就是
class\u name
所做的一切。当Rails无法正确猜测时,它会告诉Rails要使用的类的名称

考虑一个更简单的例子:

class User < ActiveRecord::Base

end

class Post < ActiveRecord::Base
  belongs_to :author, class_name: 'User'
end
class用户

如果我们写的都是
属于:author
,Rails怎么知道
Post
用户关联?

Rails需要知道为关联实例化哪个类。它通过基于关联名称进行猜测来实现这一点,但它只能在类和关联的命名是可预测的情况下实现这一点。具体来说,它使用
String#classify
将关联名转换为类名<代码>分类
将下划线大小写转换为驼峰大小写,并将单词单数化:

"some_kind_of_records".classify => "SomeKindOfRecord"
在您的特定情况下,您的关联名和类名不是以这种方式关联的。
:followered\u user\u relationship
将导致Rails查找名为
followeredUserrelationship
的类,该类不是正确的类,
followerrelationship

因为您稍微偏离了这个约定,所以必须显式地告诉Rails所涉及的类的名称。这就是
class\u name
所做的一切。当Rails无法正确猜测时,它会告诉Rails要使用的类的名称

考虑一个更简单的例子:

class User < ActiveRecord::Base

end

class Post < ActiveRecord::Base
  belongs_to :author, class_name: 'User'
end
class用户

如果我们写的都是
属于:author
,Rails怎么知道
Post
用户关联?

Rails需要知道为关联实例化哪个类。它通过基于关联名称进行猜测来实现这一点,但它只能在类和关联的命名是可预测的情况下实现这一点。具体来说,它使用
String#classify
将关联名转换为类名<代码>分类
将下划线大小写转换为驼峰大小写,并将单词单数化:

"some_kind_of_records".classify => "SomeKindOfRecord"
在您的特定情况下,您的关联名和类名不是以这种方式关联的。
:followered\u user\u relationship
将导致Rails查找名为
followeredUserrelationship
的类,该类不是正确的类,
followerrelationship

因为您稍微偏离了这个约定,所以必须显式地告诉Rails所涉及的类的名称。这就是
class\u name
所做的一切。当Rails无法正确猜测时,它会告诉Rails要使用的类的名称

考虑一个更简单的例子:

class User < ActiveRecord::Base

end

class Post < ActiveRecord::Base
  belongs_to :author, class_name: 'User'
end
class用户

如果我们写的都是
属于:author
,Rails怎么知道
Post
用户关联呢?

很抱歉问了一个基本的问题,但是“Rails需要知道为关联实例化哪个类”是什么意思,我认为唯一与关联相关的类是模型或控制器,你是指其中的一个,还是完全不同的?您是指数据库本身吗?控制器与关联无关。我只说模型。您的模型具有关联,关联由方法定义,
has\u many
属于等。您为这些方法指定关联名称,如
has\u many:users
。雷