我不确定如何建模以下要求:
我们向用户发送3种不同啤酒的包装。用户分为4类tasting_profiles。然后,我们为所有用户准备了4种不同的啤酒。然后用户对啤酒进行评级,这将定期发生。
注意:我主要担心的是我有一个表(Packs)可能有多个相同外键的实例。每包装包含3种啤酒。
目前我有以下型号:
用户/啤酒/个人资料/打包/评级
class User < ActiveRecord::Base
belongs_to :profile
has_many :ratings # A user rates every beer received.
has_many :beers, through: :ratings
end
class Beer < ActiveRecord::Base
has_many :ratings
has_many :users, through: :ratings
has_many :packs
end
class Profile < ActiveRecord::Base
has_many :packs #we setup and send periodic packs for each tasting_profile (Profile)
has_many :users #each tasting profile has many users
has_may :beers #each tasting profile has many possible beers
end
class Pack < ActiveRecord::Base
belongs_to :beer #Not sure
belongs_to :profile
end
class Rating < ActiveRecord::Base
belongs_to :user
belongs_to :beer
end
包模型问题: 我的第一个选择是在Pack模型中包含以下字段:
这样我就有了一个完整的包装。
在这里研究我读到这显然是一种不好的做法,只有一个入口FK被建议。像这样:
在这种情况下,我会为每个包装有3个条目。
最后我正在考虑研究一个数组字段(不确定是否可以用外键完成):
创建包后,我需要根据用户数量,根据需要使用以下多个条目填充评级表。如果我在tasting_profile中有100个用户,我会向他们发送3个啤酒包,这里有300个条目
我真的很困惑如何正确建模。 ¡我会感谢任何可能的帮助!我试着尽可能详细。如果您需要进一步澄清,请与我们联系。
先谢谢!!
答案 0 :(得分:0)
我花了很多时间,但比预期的要简单。一旦我在同一个表中需要同一个foreign_id的多个实例,我应该很清楚我需要另一个连接表。
首先我尝试使用has_and_belongs_to_many关联,但是我在删除连接表中的“关联”条目时遇到了问题。所以我结束了一个has_many Trough。这些是变化:
System.out.println("Please enter the number of judges.");
do
{
System.out.println("Please ensure the number you entered is between 3 and 6");
while(!scan.hasNextInt())
{
scan.nextLine();
System.out.println("Please ensure the number you entered is a number");
}
numJudges = scan.nextInt();
} while (!(numJudges >=3 && numJudges<=6));
一切正常!