Ruby on rails 属性类名称如何影响我的模型?
在我的web开发课程中,我们获得了以下代码: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)
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
。雷