有許多活動,可以邀請許多人參加,但每個活動每人只能申請一次(綁定email)。姓名、Email、活動,都不能空白,還有格式的一些限定。
$ rails new rubyevent
$ cd rubyevent/
$ rails g scaffold invite name email event_id:integer
$ rake db:migrate
$ rails g model Event
/db/migrate/create_events.rb
t.string :title
$ rake db:migrate
$ rails c #新增資料
Event.create(:title => "Ruby")
Event.create(:title => "PHP")
Event.create(:title => "Java")
Event.create(:title => "Html")
Event.create(:title => "CSS")
/app/models/invite.rb
belongs_to :event
validates :name, presence:{ message: '請填寫您的名字/暱稱' }
validates :email, presence:{ message: '請填寫Email' }, format:{ with: /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i, message: 'Email 格式有誤' }, uniqueness:{ scope: [:event_id], message: '這個 Email 已經填寫過了' }
validates :event, presence: { message: '請選擇活動' }
# belongs_to :event:屬於event。
# 名字不可空白。
# Email不可空白、有格式限定、是唯一的不可重複。
# 活動選單不可以沒有選擇。
/app/models/event.rb
has_many :invites
# has_many :invites:有很多invites
/app/views/_form.html.erb
<div>
<%= f.label :event_id, "活動" %>
<%= f.collection_select(:event_id, Event.all, :id, :title) %>
</div>
# 輸入方式為下拉式選單
/app/views/index.html.erb
<%= invite.event.try(:title) %>
/app/views/show.html.erb
<%= @invite.event.try(:title) %>
# 顯示出event名稱,而不是id。用try,他才會去試,是否真的有值,沒有值就會顯示空的。
沒有留言:
張貼留言