我是Rails的新手。在Django中,模型字段有一个choices选项,如下所示:
class Student(models.Model):
FRESHMAN = 'FR'
SOPHOMORE = 'SO'
JUNIOR = 'JR'
SENIOR = 'SR'
GRADUATE = 'GR'
YEAR_IN_SCHOOL_CHOICES = [
(FRESHMAN, 'Freshman'),
(SOPHOMORE, 'Sophomore'),
(JUNIOR, 'Junior'),
(SENIOR, 'Senior'),
(GRADUATE, 'Graduate'),
]
year_in_school = models.CharField(
max_length=2,
choices=YEAR_IN_SCHOOL_CHOICES,
default=FRESHMAN,
)
在Rails中实现相同目标的方法是什么?就我而言,我想要一个activity
可以包含值的字段to-read, reading, read, not-finished, reading_again
。提前致谢
您好,您可以在模型中添加验证:
class Student < ApplicationRecord
validates :activity, inclusion: { in: ["to-read", "reading", "read", "not-finished", "reading_again"],
message: "%{value} is not a valid activity" }
end
选择必须放在表单视图中,如下所示:
<%= form_with model: @student, class: "" do |f| %>
<%= select_tag(:activity,
options_for_select(["to-read", "reading", "read", "not-finished", "reading_again"], @student.activity) %>
<%= f.submit "Create" %>
<% end %>
在数据库模式中,您应该具有:
create_table "students", force: :cascade do |t|
t.string "activity"
t.datetime "created_at", precision: 6, null: false
t.datetime "updated_at", precision: 6, null: false
end
不要忘记:如果您的数据库架构不正确,则必须进行迁移,而不能直接编辑您的schema.rb
:https : //guides.rubyonrails.org/active_record_migrations.html
希望这个问题的答案
最好,Théo
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句