use*_*471 3 ruby-on-rails model-associations ruby-on-rails-4
我正在使用Ruby on Rails创建一个类似于LinkedIn的Web应用程序(rails 4),我正在尝试在User表中添加"技能"列.每个用户都可以拥有多种技能,我希望能够按技能对用户进行分类.
我可以将"技能"列设置为类型数组(确切地说是字符串数组),或者我可以拥有一个新的技能模型并进行关联(使用has_many).哪个会更好,还是有更好的解决方案?
谢谢!
您绝对应该使用基于模型的技能解决方案而不是序列化数组或任何其他解决方案:
全局关系配置如下:
class User < ActiveRecord::Base
has_many :users_skills
has_many :skills, through: :users_skills
class UsersSkill < ActiveRecord::Base
belongs_to :user
belongs_to :skill
validates :user_id, :skill_id, presence: true
class Skill < ActiveRecord::Base
has_many :users_skills
has_many :users, through: :users_skills
Run Code Online (Sandbox Code Playgroud)
有了这个,很容易从技能中找到用户,反之亦然:
web_developpers = Skill.where(name: 'Web developper').first.users
johns_skills = User.where(name: 'John').first.skills
Run Code Online (Sandbox Code Playgroud)
如果明天你的老板要你添加"首选技能"或"最佳技能"等功能怎么办?或者只是一种"订购"(设置层次结构)用户技能的方法?
只需best在连接表(users_skills)上添加一个布尔列
User.first.skills.where(users_skills: { best: true })
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
111 次 |
| 最近记录: |