Jas*_*ngh 0 ruby activerecord ruby-on-rails
我想skill
在MySQL表中插入调用skills
.
我有skills
作为param[:skills] = "Lorem, Ipsum, Is, A, Dummy, Text"
我想将它们插入MySql DB.
我使用的方式是:
def skill_to_add
skills = params[:skills].split(',')
skills.each do |s|
find_skill = Skill.find_by(:skill => s)
if find_skill
find_skill.update(:skill_count => find_skill.skill_count + 1)
else
Skill.create(:skill => s, :skill_count => 1)
end
end
end
Run Code Online (Sandbox Code Playgroud)
做这件事的干净方法是什么?
我用find_or_create_by
(见文档):
skills.each do |skill_name|
skill = Skill.find_or_create_by(skill: skill_name)
skill.increment(:skill_count)
skill.save
end
Run Code Online (Sandbox Code Playgroud)
注意:您需要将列设置为整数列,默认值为0,才能正常工作.
我还建议您将技能模型属性重命名为:
Skill
-> name
-> count
Run Code Online (Sandbox Code Playgroud)
通常使用它是多余的Skill.skill_count
.
Sideote:在线
skills = params[:skills].split(',')
Run Code Online (Sandbox Code Playgroud)
你打算用名字创造空间技能,为什么?
skills = 'Lorem, Ipsum, Is, A, Dummy, Text'.split(',')
skills # => ['Lorem', ' Ipsum', ' Is', ' A', ' Dummy', ' Text']
Run Code Online (Sandbox Code Playgroud)
我想你想剥离分裂的值:
skills = params[:skills].split(',').map(&:strip)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
71 次 |
最近记录: |