我有用户模型和标签模型。用户拥有技能和兴趣。
技能是标签,兴趣是标签。
我有一个用户,标签,用户技能,用户兴趣的表格。最后两个是中间表。我如何关联所有这些。以下是我的,但没有工作。提前谢谢。
#User model
class User < ActiveRecord::Base
has_and_belongs_to_many :skills
has_and_belongs_to_many :interests
end
#Tag model
class Tag < ActiveRecord::Base
has_and_belongs_to_many :users
end
#Migrations
create_table :users_interests, :id => false do |t|
t.references :user
t.references :tag
end
create_table :users_skills, :id => false do |t|
t.references :user
t.references :tag
end
答案 0 :(得分:2)
所以这里是遇到此问题的其他人的答案。中间表必须按顺序按字母顺序排列,即使这意味着可读性下降。然后使用join_table。如果这不是正确的答案(它有效,但可能不是很好的编码),请告诉我。
class User < ActiveRecord::Base
has_and_belongs_to_many :skills, :class_name => "Tag", :join_table => "skills_users"
has_and_belongs_to_many :interests, :class_name => "Tag", :join_table => "interests_users"
end
class Tag < ActiveRecord::Base
has_and_belongs_to_many :users
end
create_table :skills_users, :id => false do |t|
t.references :user
t.references :tag
end
create_table :interests_users, :id => false do |t|
t.references :user
t.references :tag
end
答案 1 :(得分:0)
预计您的联接表格会有skill_id
和interest_id
FK而不是tag_id
。
我相信你正在寻找(没有方便的终端):
class User < ActiveRecord::Base
has_and_belongs_to_many :skills, :association_foreign_key => :tag_id
has_and_belongs_to_many :interests, :association_foreign_key => :tag_id
end