我知道belongs_to将外键放在声明模型上,而has_one将它放在另一个模型上。这是否意味着这个例子没有区别?
class Category
belongs_to :blog
end
class Blog
end
class Blog
has_one :category
end
class Category
end
我唯一能看到的是第二个例子的命名法更有意义。
答案 0 :(得分:2)
是
belongs_to
期望外键在其表上,而has_one
期望它在另一个上:
# here the Category table will need to have a blog_id field
class Category
belongs_to :blog
end
# the blog table won't need anything
class Blog
has_one :category
end
引言下的 has_one
类似于has_many
,但在查询表时会向sql语句添加LIMIT 1子句。
答案 1 :(得分:1)
正如您所指出的,差异在于数据库。具有belongs_to
引用的模型必须包含关联的外键。使用has_one
时,它会在相关模型上找到一个外键。