我需要能够保存用户的偏好,我想知道自己是否走在正确的轨道上。
以下示例:
表
表格包含以下内容:
现在,在用户创建他的常规个人资料(姓名,电子邮件,性别,电话号码,...)之后 我想将它们重定向到一个让他们填写食物偏好的页面。
用户可以喜欢多种冰淇淋。
我是否使用正确的逻辑来让用户填写他们的偏好?
有没有更好的方法可以实现保存用户偏好的目标?
我现在这样做的方式应该会产生类似这样的>>
偏好
id,user_id,pancake_id,icecream_id
1,2,[1,2],[3,5,7,2]
效率这么高吗?
谢谢。
答案 0 :(得分:1)
我可能会使用更简单的东西 - 有许多通过关联来模拟你的现实。
AppActivity
同样的煎饼..
答案 1 :(得分:1)
首先,我认为我们可以像这样修改架构:
User
有很多Preference
Preference
有很多Pancake
到PreferencePancake
,因此PreferencePancake
是Preference
和Pancake
Preference
有很多Icecream
到PreferenceIcecream
,因此PreferenceIcecream
是Preference
和Icecream
为什么我建议这个?
Pancake
和Icecream
存在而不关心Preference
Preference
和Pancake
/ Icecream
之间进行更改。因为User
可以将许多Pancake
和Icescream
视为他的偏好。顺便说一下,许多用户可能会喜欢Icescream
或Pancake
。然后,模型的定义很明确:
class User < ActiveRecord::Base
has_many :preferences
end
class Preference < ActiveRecord::Base
has_many :preference_pancakes
has_many :preference_icescreams
has_many :pancakes, through: :preference_pancakes
has_many :icescreams, through: :preference_icescreams
end
class Pancake < ActiveRecord::Base
has_many :preference_pancakes
end
class Icecream < ActiveRecord::Base
has_many :preference_icescreams
end
class PreferencePancake < ActiveRecord::Base
belongs_to :preference
belongs_to :pancake
end
class PreferenceIcecream < ActiveRecord::Base
belongs_to :preference
belongs_to :icescream
end