2

私は、デジタルサイネージアプリケーションのcmsとして機能するシンプルなrailsアプリを持っています。
このアプリでは、すべてのユーザーに提供したい事前定義されたスタイルのプールがあります。
すべてのスタイルには、背景画像、いくつかのcss、およびビデオが含まれます。

私の目標は、さまざまなスタイルを準備し、rails adminを使用してそれらを追加できるセットアップを取得することです。すべてのユーザーは、アカウントのactive_styleとしてスタイルの1つを選択できるメニューを用意する必要があります。

簡単そうに聞こえますが、私が行き詰まっているのは、ユーザーモデルとスタイルモデルの関連付けです。
さまざまなことを数時間試しましたが(has_many:/ has_many_though / has_and_belongs_to_many)、各ユーザーがスタイルオブジェクトの1つを選択して、それをactive_styleにし、一度に1つのactive_styleのみを許可できるようになりません。

私はこれを行うための最良の方法は何であるか疑問に思っており、誰かが助けてくれたらとても幸せです。
私はRailsプログラミングに比較的慣れていないので、これがばかげていると思われる場合は失礼します。

4

1 に答える 1

3

直感的ではないように聞こえますが、この場合に必要な関連付けは「belongs_to」だと思います。「ユーザーはアクティブなスタイルに属している」と言うのは奇妙に聞こえるので直感的ではないと思いますが、「has_one」では単一のスタイルを複数のユーザーのアクティブなスタイルにすることはできません。

次のコードは、外部キーを格納する「active_style_id」整数列がUsersテーブルにあることを前提としています。

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 に答える