我正在使用Users
和Tools
对方案进行建模,其中Tool
由一个User
拥有,但可供许多Users
使用,包括拥有它的人。
我正在考虑向owner_id
添加Tools
列,并将其has_many
用户或添加新的关系表。
我是Rails的新手,但我在模型中设置正确的关联时遇到了问题,也许你可以指出我正确的方向?
非常感谢。
答案 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_id
和tool_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,但这是它在其他作品中的运作方式