0

アドバイスが必要です。RoR に関するプロジェクトを行っていますが、モデル間のどの関係を使用すればよいかわかりません。ユーザー、ボード、メッセージの 3 つのモデルがあります。最初は非常に単純です: ユーザーには 1 つの壁があり、それはユーザーに属しているため、次のようになるはずです。

class User < ActiveRecord::Base
  has_one :board
end

class Board < ActiveRecord::Base
    belongs_to :user
end

最後のモデルは Messages で、ここに私の問題があります。メッセージは、彼が書いたユーザーに属しますが、壁に書いたために壁にも属します (他のユーザーに属する壁である可能性があります)。

私は簡単な解決策を使用しました:

class Theme < ActiveRecord::Base
    belongs_to :board
    belongs_to :user
end

class User < ActiveRecord::Base
      has_one :board
      has_many :themes
end

class Board < ActiveRecord::Base
      belongs_to :user
      has_many :themes
end

しかし、私はそれに満足しておらず、完璧ではないと感じています. 私は次のように考えて書くことができる解決策を探しています:

user.themes.create(:board => @board)

(今は user_id フィールドを埋めません)

私より Ruby on Rails モデルの経験が豊富な人にとっては、これが難しい作業ではないことを願っています。良いアドバイスをいただければ幸いです、ありがとう。

4

1 に答える 1

0

通常は、devise のような認証ジェムを使用します。次に、現在アクションを呼び出しているユーザーのオブジェクトを含む current_user 変数があります。

次に、ユーザーがトピックを作成するときに、コントローラーに 1 つの単純な行を追加して、ユーザーを設定します。

@theme.user = current_user

また、cancan などの gem を使用して、中央ファイルで承認を管理する必要があります。ここでレールキャストを見つけることができます:

http://railscasts.com/episodes/192-authorization-with-cancan

于 2011-10-20T11:42:56.910 に答える