Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails模型关联类型_Ruby On Rails_Database_Ruby On Rails 3_Activerecord_Polymorphic Associations - Fatal编程技术网

Ruby on rails Rails模型关联类型

Ruby on rails Rails模型关联类型,ruby-on-rails,database,ruby-on-rails-3,activerecord,polymorphic-associations,Ruby On Rails,Database,Ruby On Rails 3,Activerecord,Polymorphic Associations,我有以下表格:用户、朋友、兴趣和假期。此应用程序的目的是记录用户的兴趣和他们庆祝的节日(包括朋友的生日、周年纪念日等),以及朋友的兴趣,以便我可以向他们发送相关内容的提醒。无论如何: 用户将有兴趣 用户将有朋友 朋友也会有兴趣 用户将有他们庆祝的节日(约10个) -如果选择了母亲节、父亲节或情人节(在节假日),我还需要存储人员姓名及其兴趣 所以我想知道如何设置这些。。棘手的是兴趣和假期 兴趣应该是多态的,这样用户和朋友都可以访问吗?还是有很多:通过 假期怎么样?这些将如何记录姓名和个人利益 谢谢

我有以下表格:用户、朋友、兴趣和假期。此应用程序的目的是记录用户的兴趣和他们庆祝的节日(包括朋友的生日、周年纪念日等),以及朋友的兴趣,以便我可以向他们发送相关内容的提醒。无论如何:

用户将有兴趣
用户将有朋友
朋友也会有兴趣
用户将有他们庆祝的节日(约10个)
-如果选择了母亲节、父亲节或情人节(在节假日),我还需要存储人员姓名及其兴趣

所以我想知道如何设置这些。。棘手的是兴趣和假期

兴趣应该是多态的,这样用户和朋友都可以访问吗?还是有很多:通过

假期怎么样?这些将如何记录姓名和个人利益


谢谢!我真的在为这一点而挣扎,可能是把事情复杂化了。

现在我想我明白你想要做什么了,我将这样建模:

用户

has_many :friends
has_many :person_interests, :as => :person
has_many :interests, :through => :person_interests
has_many :user_holidays
has_many :holidays, :through => :user_holidays
朋友

belongs_to :user
has_many :person_interests, :as => :person
has_many :interests, :through => :person_interests
PersonInterest

belongs_to :interest
belongs_to :person, :polymorphic => true
has_many :person_interests
has_many :people, :through => :person_interests # may need an `inverse_of` here
利息

belongs_to :interest
belongs_to :person, :polymorphic => true
has_many :person_interests
has_many :people, :through => :person_interests # may need an `inverse_of` here
UserHoliday

belongs_to :user
belongs_to :holiday
has_many :user_holidays
has_many :users, :through => :user_holidays
假日

belongs_to :user
belongs_to :holiday
has_many :user_holidays
has_many :users, :through => :user_holidays

通过这些设置,您应该能够执行需要执行的查询。

如果我和我的一个朋友注册,我的朋友既是朋友也是用户吗?(即两个不同的模型)如果它们是单独的模型,则兴趣肯定与用户和朋友具有多态关系,节假日可能具有多态关系,但您仅指定节假日与用户相关,不一定与朋友相关。谢谢!不,该网站没有社交网络方面的内容,用户是个人的,与该网站的其他用户没有关系。“friends”的目的是让用户输入此人的生日和兴趣,然后我会向他们发送一个提醒,并提供与好友兴趣相关的优惠。假期也一样。如果用户选择“周年纪念”,我会问他们该人的姓名、日期和兴趣,这样我就可以向他们发送相关的优惠。有道理?非常感谢!好的,下一个问题-兴趣是打算在用户之间共享的,就像单个兴趣记录可以连接到许多用户/朋友一样,还是兴趣只是字符串?好的,有一个包含30个兴趣的集合列表,我将在数据库中植入。。他们必须从该列表中选择,不能添加任何其他。。但它们只是字符串,所以我想每个记录都属于一个唯一的用户?。。谢谢你不必这么做<代码>拥有并且属于许多人就是为了这个。我将留下一个如何建模的答案。谢谢,根据我之前的问题,“has_many interests,through=>:person_interests”将允许我区分用户自己的兴趣和用户朋友的兴趣,对吗?再次感谢!是的,你可以做,例如,
@user.interests
@user.friends.first.interests
,它会像你期望的那样工作。难道不应该有个人模型吗?“属于:人”不,不是为了多态关系。它只是一个可以连接到它的代表性名称,在这种情况下可以是
用户
朋友
。明白了。。现在我明白了。。完美的再次感谢