我有5个模型:用户,关键字,问题,关联和question_status。左或全加入活动记录
- 用户和关键字由协会(同样的关键字可以由多个用户 添加&反之亦然)
- 关键字和问题通过的has_many belongs_to的(关键字 可以有很多问题,问题涉及有关属于关键字)
- 用户和问题由question_status(用户可以标记 问题的回答,删除等)
所以RELA相关tionships是:
- 用户有通过协会的关键字
- 关键字有通过协会众多用户
- 关键字,有许多问题
- 问题属于一个关键字
- 的用户可以将状态许多问题通过question_status
- 一个问题可以由许多用户通过分配status_status
我不得不建造5个模型,因为同一个关键字可以被多个用户添加。所以我必须保持用户和关键字彼此分离,并通过关联使它们相关。同样,多个用户可以在同一个问题上拥有不同的标签(回答,删除,存档等)。所以我必须将这些状态与问题表分开保存。
模型是 -
class User < ActiveRecord::Base
has_many :associations, dependent: :destroy
has_many :keywords, :through => :associations
has_many :question_statuses, dependent: :destroy
has_many :questions, :through => :question_statuses
class Keyword < ActiveRecord::Base
has_many :questions, dependent: :destroy
has_many :associations, dependent: :destroy
has_many :users, :through => :associations
class Question < ActiveRecord::Base
belongs_to :keyword
has_many :question_statuses, dependent: :destroy
has_many :users, :through => :question_statuses
class Association < ActiveRecord::Base
belongs_to :keyword
belongs_to :user
class QuestionStatus < ActiveRecord::Base
belongs_to :question
belongs_to :user
我需要建立在ActiveRecord的连接查询,这将使我的问题的用户(例如users.id = 2)关键字用户在自己的帐户添加排除已删除或回答的问题,例如已删除= t或回答= t在question_statuses表中。
只有当用户标记问题时,记录才会添加到question_statuses中。否则,question_statuses将没有该用户的任何记录。
任何帮助将不胜感激。
你提到了删除= t和回答= t。那些在Rails中的布尔字段?如果您使用显式文本字段而不是布尔字段,我建议切换到使用布尔字段,以便Rails能够理解您打算在其中存储什么类型的信息。 – Coenwulf
他们是布尔字段。 – amey1908