作者ihower (好2ˇ)
看板Ruby
标题Re: [问题] Rails中AR Associations的单复数问题
时间Mon Aug 1 03:41:47 2011
※ 引述《tonytonyjan (南洋大兜虫)》之铭言:
: 环境:
: Rails ~> 3.0.0
: 状况:
: 在阅读文章、书籍的时候,看到每个人都说
: has_one, belongs_to後面要放单数的association_id
: has_many, has_and_belongs_to_many及:through後面要放复数
: 但是皆知其然不知其所以然
: 那些association_id的域名来自哪里?
: 是DB中已存在的table name吗?还是已存在的model name呢?
这几个association方法都有参数是 :foreign_key 和 :class_name
这两个值通常不需要设定, 因为rails会依照惯例帮你设定
belongs_to :user 等同於
belongs_to :user, :foreign_key => :user_id, :class_name => "User"
至於DB的table叫啥,依照惯例则是Model名字的复数:
class UserJob < ActiveRecord::Base
end
等同於
class UserJob < ActiveRecord::Base
set_table_name :user_jobs
set_primary_key :id
end
因此, 如果你通通依照rails惯例, 你就不需要写 set_table_name,
set_primary_key, :foreign_key, :class_name....这些参数了, 这就叫
惯例胜於设定(Convention Over Configuration)原则
: 我如果故意单数写复数,复数写单数,仍可以运作吗?
no, 除非你手动指定 :foreign_key 和 :class_name 等
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.240.174.138
※ 编辑: ihower 来自: 111.240.174.138 (08/01 03:44)
1F:推 markmcm:推详细~ 08/01 08:19
2F:推 tonytonyjan:感谢指点!真的非常的详细!m(_ _)m 08/02 12:24