许多用户“拥有”模型的​​Rails关联

时间:2013-03-03 15:20:20

标签: ruby-on-rails associations has-many-through has-many model-associations

我有一个简单的rails应用程序,可用作数字标牌应用程序的cms 在这个应用程序中,我想为所有用户提供一组预定义的样式 每种风格都包括背景图片,一些CSS和视频。

我的目标是获得一个设置,我可以准备不同的样式,使用rails admin添加它们,每个用户都应该有一个菜单,他可以为其帐户选择其中一种样式 active_style

听起来很简单,但我遇到的问题是用户样式模型之间的联系。我几个小时尝试了不同的东西(has_many:/ has_many_though / has_and_belongs_to_many),但我无法达到每个用户可以选择一个样式对象并使其成为active_style的点,并且只允许一个一次使用active_style。

我只是想知道最好的方法是什么,如果有人可以提供帮助,我会很高兴。我对rails编程比较陌生,请原谅这个看起来很愚蠢。

1 个答案:

答案 0 :(得分:3)

我知道这听起来不直观,但我认为在这种情况下你想要的关联是“belongs_to”。我说它不直观,因为听起来很奇怪“用户属于活动风格”,但“has_one”不允许单个风格成为多个用户的活动风格。

以下代码假定您的Users表上有一个“active_style_id”整数列,用于存储外键:

User < ActiveRecord::Base
  belongs_to :active_style, class_name: 'Style'
end

然后,您可以执行以下操作:

style = Style.find(...)
user = User.create(active_style: style)
user.active_style # => style