1

我创建了一个Rails应用程序和 我的“用户”表是这样的我应该让新表在Rails中存储用户的地址

create_table "users", force: :cascade do |t| 
t.string "name" 
t.string "email" 
t.string "password_hash" 
t.string "password_salt" 
t.integer "country_id" 
t.integer "state_id" 
t.integer "pincode" 
t.string "address" 
t.string "phone_no" 
t.float "latitude" 
t.float "longitude" 

其他表states , country , posts

关联性:

user has_many :posts 
user belongs_to :state 

我有一个"states"表维护状态名称和其他东西。我有一个"posts"表,其中每个用户可以有多个职位。

很明显,我更关注用户的位置属性,我也需要在呈现用户的帖子时经常访问这些属性。

那么,我应该将位置相关的属性分段到一个新表"addresses"

每个用户只有一个地址。

我觉得这一个正确的,但后来我需要执行冗长的链接从posts views

防爆访问这些属性。访问状态,

<% @state = State.find(Address.find(User.find(@post.user_id).address_id)).state_id).name%> 

那么,我该怎么做片段用户或保持原样呢?

在此先感谢!

回答

2

对于您的业务逻辑,创建表'地址'可能会很好,因为将来您的users可能有多个地址。

sql点你应该让新表addresses,但我反对建立你的表,因为你的正常化模型db一些rule。在你的情况address不会伤害你的很多db

现在你可以保持里面user记录你的地址,它不会伤害你的数据库,并会加快您的渲染时间(即使它是由几毫秒)。

你必须在rendering你的意见和normalizing你的db找到余额。如果您添加addresses表格,则您的模型将更具弹性以适应进一步的更改。实施新功能或与users及其addresses相关的任何内容。

总而言之,它取决于您的实施,商业模式,要求等等。你必须找到平衡,最好的冷杉您的需求

+0

谢谢男人!我总是发现标准化在保持平衡方面有点混乱。您对解决这个难题有任何建议!我想我应该去寻找新的“地址”表。 – narush

相关问题