Ruby on rails RubyonRails:一对一映射。只是语义学还是一种真正不同的结构
因此,我正在为RubyonRails创建一个插件,使实现的地址(包括国家、州、城市和邮政编码)更容易遵循这种模式,但这与地址模型的关联无关 从我的地址模型开始Ruby on rails RubyonRails:一对一映射。只是语义学还是一种真正不同的结构,ruby-on-rails,ruby,Ruby On Rails,Ruby,因此,我正在为RubyonRails创建一个插件,使实现的地址(包括国家、州、城市和邮政编码)更容易遵循这种模式,但这与地址模型的关联无关 从我的地址模型开始 class Address < ActiveRecord::Base has_one :country has_one :state has_one :city has_one :zip_code end 类地址
class Address < ActiveRecord::Base
has_one :country
has_one :state
has_one :city
has_one :zip_code
end
类地址
说属于
和有一个
似乎是一样的,因为两者都只需要一个模型来声明所有权和外键
而且这两种说法似乎都符合逻辑
一个地址属于一个帐户,而一个帐户只有一个地址
这是唯一的语义还是有真正的区别从ActiveRecord关联的角度来看,任何带有
属于
声明的模型都有外键,任何带有声明的模型都有主键
如果我们根据您的模型的当前状态,那么您必须确保诸如国家
、州
、城市
、和邮政编码
等表都有一个名为地址id
的列。想必那不是你想要的
因此,您必须按如下方式更改地址
型号:
class Address < ActiveRecord::Base
belongs_to :country
belongs_to :state
belongs_to :city
belongs_to :zip_code
end
您可以拨打以下电话:
country.addresses
state.addresses
city.addresses
zip_code.addresses
我在以下场景中使用了has_one关联
1) 具有配置文件的用户
User has one Profile
Profile belongs to User
2) 商店的商户帐户
Merchant has one Store
Store belongs to Merchant
打得好,实际上你写的正是我写的。我用的是属于你的。我只是想看看别人会怎么说。哦,我明白了。但我不明白使用has_one的好处是什么?这是不是为了让你可以调用belish_to对象?我已经扩展了我的答案来回答你的评论。看一看。
Merchant has one Store
Store belongs to Merchant