【发布时间】:2014-01-09 20:54:39
【问题描述】:
所以我的应用程序允许用户猜测角色的性格类型。得票最多的性格类型成为角色的性格类型,并且可以根据票数无限变化。
所以有四个模型。 用户 特点 性格 声明
(声明是连接表及其模型、控制器和视图)。
用户可以为角色投票选择个性,每个角色最多可以为每个用户的个性投票。
性格表的数据永远不会改变。
所以你看,涉及到 4 个模型,其中 3 个通过 1 连接。
这就是我所拥有的,省略了验证。
字符.rb
class Character < ActiveRecord::Base
has_many :declarations
has_many :users, through: :declarations
has_one :personality, through: :declarations # This line is in question below!
end
用户.rb
class User < ActiveRecord::Base
has_many :declarations
has_many :characters, through: :declarations
end
个性.rb
class Personality
has_many :declarations
end
声明.rb
class Declaration < ActiveRecord::Base
belongs_to :users, counter_cache: true
belongs_to :characters, counter_cache: true
belongs_to :personalities, counter_cache: true
validates :user, :character, :personality, presence: true
validates_uniqueness_of :user, :scope => [:character, :personality]
end
我想知道以下两个代码中的哪一个对于正确设置数据库关联是有效的,为什么。之后我会进入我的目的和设计。
1) 字符.rb
has_many :declarations
has_many :users, through: :declarations
has_one :personality
或
2) 字符.rb
has_many :declarations
has_many :users, through: :declarations
has_one :personality, through: :declarations
另外!如果我有一个 cmets 模型,其中用户通过 cmets 有很多角色,而角色通过 cmets 有很多用户,我可以添加吗?
用户和角色已经通过声明加入。通过第二个“通过:”关联再次加入他们是否有效?
【问题讨论】:
-
感谢您的编辑
标签: sql ruby-on-rails associations