ActiveRecord [something] belongs_to [User] and has_many [Users]

时间:2012-02-26 09:32:17

标签: ruby-on-rails activerecord associations has-many belongs-to

我正在使用UsersTools对方案进行建模,其中Tool由一个User拥有,但可供许多Users使用,包括拥有它的人。

我正在考虑向owner_id添加Tools列,并将其has_many用户或添加新的关系表。

我是Rails的新手,但我在模型中设置正确的关联时遇到了问题,也许你可以指出我正确的方向?

非常感谢。

2 个答案:

答案 0 :(得分:3)

您应该将owner_id添加到Tools表格中。 协会将是这样的。

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

您需要一个tools_users表才能使用habtm-association。生成迁移并创建一个包含选项id: false和两列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之类的内容 阅读更多there

答案 1 :(得分:0)

用户有很多工具 工具属于所有者中的用户 工具有很多用户

是我要做的。 我不确定措辞,因为我不使用Active Record,但这是它在其他作品中的运作方式