Ruby on rails 保存用户的多个首选项
我需要能够保存用户的偏好,我想知道我是否在正确的轨道上 以下示例: 桌子Ruby on rails 保存用户的多个首选项,ruby-on-rails,postgresql,Ruby On Rails,Postgresql,我需要能够保存用户的偏好,我想知道我是否在正确的轨道上 以下示例: 桌子 用户:你有很多偏好吗 偏好:属于用户,有很多煎饼,有很多冰淇淋 煎饼:属于偏好 冰淇淋:属于偏好 这些表格包含以下内容: 用户:姓名、电子邮件、电话 首选项:用户id、煎饼id、冰淇淋id 煎饼:名称(即whipStream) 冰淇淋:名称(即草莓) 现在,在用户创建其常规个人资料(姓名、电子邮件、性别、电话号码等)后 我想将他们重定向到一个页面,让他们填写他们的食物偏好 用户可以喜欢多种冰淇淋 我是否使用正确的逻
- 用户:你有很多偏好吗
- 偏好:属于用户,有很多煎饼,有很多冰淇淋
- 煎饼:属于偏好
- 冰淇淋:属于偏好
- 用户:姓名、电子邮件、电话
- 首选项:用户id、煎饼id、冰淇淋id
- 煎饼:名称(即whipStream)
- 冰淇淋:名称(即草莓)
谢谢。我可能会用一些更简单的东西——通过许多关联来模拟你的现实
class User < ActiveRecord::Base
has_many :preferedicecreams
has_many :icecreams, through: :preferedicecreams
end
class PreferedIcecream < ActiveRecord::Base
belongs_to :user
belongs_to :icecream
end
class Icecream < ActiveRecord::Base
has_many :preferedicereams
has_many :users, through: :preferedicereams
end
class用户
煎饼也是一样。我可能会用一些更简单的东西——有很多关联来模拟你的现实
class User < ActiveRecord::Base
has_many :preferedicecreams
has_many :icecreams, through: :preferedicecreams
end
class PreferedIcecream < ActiveRecord::Base
belongs_to :user
belongs_to :icecream
end
class Icecream < ActiveRecord::Base
has_many :preferedicereams
has_many :users, through: :preferedicereams
end
class用户
煎饼也是一样。首先,我想我们可以修改模式如下:
有许多用户
偏好
通过Preference
有许多PreferencePancake
,因此Pancake
是PreferencePancake
和Preference
的联接表Pancake
通过Preference
有许多PreferenceIcecream
,因此Icecream
是PreferenceIcecream
和Preference
的联接表Icecream
- 一个
和煎饼
是存在的,而不关心冰淇淋
偏好
- 这种关系更为自然,而且在
和偏好
/煎饼
之间可以灵活切换。因为冰淇淋
可以喜欢许多用户
和煎饼
作为他的首选。顺便说一句,冰尖叫
或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
class用户
首先,我想我们可以这样修改模式:
有许多用户
偏好
通过Preference
有许多PreferencePancake
,因此Pancake
是PreferencePancake
和Preference
的联接表Pancake
通过Preference
有许多PreferenceIcecream
,因此Icecream
是PreferenceIcecream
和Preference
的联接表Icecream
- 一个
和煎饼
是存在的,而不关心冰淇淋
偏好
- 这种关系更为自然,而且在
和偏好
/煎饼
之间可以灵活切换。因为冰淇淋
可以喜欢许多用户
和煎饼
作为他的首选。顺便说一句,冰尖叫
或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
class用户
谢谢,在这种情况下,我的首选煎饼表只有3个字段,对吗?ID,user\u ID,pancake\u ID,如果我想得到用户喜欢的所有煎饼,我可以做Preferencepancake.where(user\u ID:current\u user)?@martijnkerckhart:Yes,要得到所有煎饼
您可以查询pancake.joins(:reference\u pancake)。其中(preference\u pancake: