接続したいモデルが3つあればどうなりますか?例えば多くの3つのモデルを持っています。
:
ユーザーは、さまざまなアプリケーションのための多くの異なる権限を持つことができます。
は、だから私は、格納するテーブルが必要になります。user_id
permission_id
application_id
はhas_and_belongs_to_manyアソシエーションであることは可能ですか?
おかげ
接続したいモデルが3つあればどうなりますか?例えば多くの3つのモデルを持っています。
:
ユーザーは、さまざまなアプリケーションのための多くの異なる権限を持つことができます。
は、だから私は、格納するテーブルが必要になります。user_id
permission_id
application_id
はhas_and_belongs_to_manyアソシエーションであることは可能ですか?
おかげ
はい、あなたはhas_and_belongs_to_manyアソシエーションの関係を持つことができます。より多くのヘルプはここに見つけることができますhttp://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html
私はhas_many:throughでそれを行います。基本的には
class Upa < ActiveRecord::Base
belongs_to :user
belongs_to :permission
belongs_to :application
end
class User < ActiveRecord::Base
has_many :permissions, :through => :upas
has_many :applications, :through => :upas
end
class Permission < ActiveRecord::Base
has_many :users, :through => :upas
has_many :applications, :through => :upas
end
class Application < ActiveRecord::Base
has_many :permissions, :through => :upas
has_many :users, :through => :upas
end
使用すると、1つの古典1で記述できる関係の任意の並べ替え、多くのリレーショナルデータベースでは、多くの関係に多くの1つは、ActiveRecordの中に記述することができます。
これにネストされたフォームを使用する方法の例を提供することは可能ですか?つまり、ユーザーからアプリケーションとアクセス許可を更新できますか? – glarkou
[asciicastsのネストされたモデルは、パート1と2を形成します](http://asciicasts.com/episodes/196-nested-model-form-part-1)。 Rails 3の特定のユースケースについて注意する必要がありますが、Rails 2では、既存の子と新しい親の関連付けを行うことができます(たとえば、既存のアクセス権に結びつけたい新しいユーザーがいる場合)。 Rails 3では、セキュリティ上のリスクとみなされるため、これ以上は実行できないため、基本的な@ parent.saveは失敗します。 [これについての討論](https://gist.github.com/897939/4da2160f28575d574c90c6fbc765b238900bd645) –
このような場合、 'user.permissions'とはどういう意味ですか?すべてのアプリケーションの権限?ユーザがアプリケーション「A1」に対して許可「P1」を有し、アプリケーション「A2」に対して「P2」を有するとする。あなたは 'has_many:through'で' [P1、P2] 'を得るのですが、どうしますか? –
HABTMは3ウェイ関連ですか?真剣ですか? –