2

我有一个简单的 Rails 应用程序,可用作数字标牌应用程序的 cms。
在这个应用程序中,将有一个预定义样式池,我想向所有用户提供这些样式。
每种样式都包含背景图片、一些 CSS 和视频。

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

听起来很简单,但我卡住的地方是UserStyle模型之间的关联。
我尝试了几个小时不同的东西(has_many: / has_many_though / has_and_belongs_to_many),但我无法达到每个用户可以选择一个样式对象并将其设为 active_style,并且一次只允许一个active_style 的地步。

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

4

1 回答 1

3

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

以下代码假设您的用户表上有一个“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
于 2013-03-03T15:30:17.317 回答