1

私はToolは1 Userによって所有されているが、それを所有しているものに含む多くのUsersで使用することができUsersTools、とのシナリオをモデル化しています。ActiveRecordを[何か] [ユーザー]とhas_manyのbelongs_toの[ユーザー]

私はowner_id列をToolsに追加し、has_manyというユーザーに追加するか、新しいリレーションシップテーブルを追加することを考えていました。

私は本当にRailsの新機能ですが、モデルに適切な関連付けを設定する際に問題がありますが、正しい方向に向けることができますか?

ありがとうございました。

答えて

3

をどのように動作するかであるあなたは、Toolsテーブルにowner_idを追加する必要があります。 そのような関係になります。

class User < ActiveRecord::Base 
    has_and_belongs_to_many :tools 
end 

class Tool < ActiveRecord::Base 
    has_and_belongs_to_many :users 
    belongs_to :owner, :class_name => 'User' 
end 

あなたはHABTMアソシエーションを使用するためにtools_usersテーブルが必要になります。移行を生成し、オプションid: falseとテーブル2列user_idtool_idを作成します。

その後
class CreateToolsUsersTable < ActiveRecordMigration 
    def change 
    create_table :tools_users, id: false do |t| 
     t.integer :tool_id 
     t.integer :user_id 
    end 
    end 
end 

あなたが@user.toolsまたは@user.owner のようなものを呼び出すことができます

+0

there続きを読むあなたの迅速な返信いただきありがとうございます。私は 'Tool'が所有している' User'だけでなく、 'User'でも多く使うことができるモデリングについてはどうでしょうか?今は1つの 'User'だけが使うことができますか、間違っていますか? – fuji

+0

私はこれをテストしていないので確信はありませんが、オーナーを '@tool.owner = @ user'と定義でき、普通のユーザーだけを' @tool.users << @ user'ツールに追加したいと思っています。ああ、 'belongs_to:user'の代わりに' has_many_and_belongs_to_many:users'アソシエーションが必要です –

+0

habtm-associationを使うためには、tools_usersテーブルが必要です。移行を生成し、オプションid:falseとuser_idとtool_idの2つのカラムを持つテーブルを作成します。 – theodorton

0

ユーザーは ツールは ツールは、私がどうなるのか、多くのユーザー

をされた所有者にユーザーに属する多くのツールを持っています。私は、アクティブレコードを使用していないので、 私は言葉遣いについてはよく分からないが、これは、それは他のORMに

関連する問題