2012-02-27 26 views
0

RoRの初心者の方は、事前にすべての支援をお願いします。私は次のようなモデルを作成しようとすると、自分自身を混乱させてしまいます。Rails:ネストされた属性とモデル?

私は3つのオブジェクトを持っています:ユーザー、組織、役割。ユーザーは1つ以上の組織に所属できますが、組織ごとに1つの役割しか持ちません。例:

Jon | Org1 |オーナー

Jon | Org2 |従業員

ボブ| Org1 |従業員

ボブ| Org2 |所有者

私はモデル(has_many、through =>?)をどのように設定するのですか?また、編集フォームがあるときに、ユーザー情報、組織とロールをすべて内部から更新できるようにします同じ形式ですか?注:それが適切かどうかはわかりませんが、私はオーナーだけが組織を編集できるようにするつもりです。

もう一度おねがいします!

EDIT以下 は、私が持っているもので、プラス私は今、受信エラー:

モデル/ user.rb

class User < ActiveRecord::Base 
    has_many :org_roles 
    has_many :orgs, :through => :org_roles 
    accepts_nested_attributes_for :orgs, :allow_destroy => true 
    has_one :user_detail 
    has_one :user_address 

    attr_accessible :orgs 
end 

モデル/ org.rb

class Org < ActiveRecord::Base 
end 

モデル/ role.rb

class Role < ActiveRecord::Base 
end 

モデル/ org_role.rb

class OrgRole < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :org 
    belongs_to :role 

    validates_presence_of :user, :org, :role 
    validates_uniqueness_of :org_id, :scope => :user_id 
end 

ビュー/ edit.html.erb

#user form info above... 
    <%=f.fields_for :orgs do |ff| %> 
     <div>Your Organization Name:<br /> 
     <%= ff.text_field :name%></div> 
    <% end %> 

エラーメッセージ:解決しよう

Can't mass-assign protected attributes: orgs_attributes 

追加:私にorgs_attributesユーザーモデル、attr_accessible

答えて

0

次の属性を持つUserOrganizationという4番目のモデルを作成します。 user_id,organization_idおよびrole_idです。 UserOrganizationモデルの中で私が持っているでしょう以下:

我々は、ユーザーが多くの組織に所属することができるというあなたの基準が満足する必要がありますが、どのような
class UserOrganization < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :organization 
    belongs_to :role 

    validates_presence_of :user, :organization, :role 
    validates_uniqueness_of :organization_id, :scope => :user_id 
end 

組織に一回、及びそれらの団体のそれぞれのための唯一最大役割を果たす必要があります。

ユーザー、組織、役割の関連付けは、その実装(ユーザーには多数のユーザー組織があります)ではかなり簡単です。ユーザーモデルを使用して組織を直接取得する場合は、has_many :organizations, :through => :user_organizationsも使用できます。

http://apidock.com/rails/ActiveRecord/NestedAttributes/ClassMethods/accepts_nested_attributes_for

http://railscasts.com/episodes/196-nested-model-form-part-1

+0

はありがとう:私はあなたがについてaccepts_nested_attributes_forを読んだお勧めします編集フォームについてのご質問にはまた

!私はそれを感謝します – user464180

+0

私は自分のコードと私が受け取っているエラーを追加しました。あなたは時間があり、見直すことができたら、私は心から感謝します。再度、感謝します。 – user464180

+0

私はそれを得た。ソリューションに向けた正しい道のりを手伝ってくれてありがとう。 – user464180

関連する問題